Compare commits

..

5 Commits

Author SHA1 Message Date
ef1e8e6c6a And... Another problem.
This was so much simpler than anything I fucking thought about, what the
hell dude...
2024-11-13 20:49:53 -03:00
7361c88a44 Aaaand... Another problem.
I didn't do this one earlier this year because I thought it was harder
than this, seriously, the statement was really confusing for me...
2024-11-12 21:32:22 -03:00
3b4d2cf2d1 Add another simple problem. 2024-11-12 21:06:30 -03:00
fa3af48426 Merge branch 'master' of https://git.puffypony.party/segcolt/beecrowd-solutions 2024-11-12 20:23:19 -03:00
e6bcb6f654 Actually do the problem
I completely forgot to commit this one...
2024-11-02 16:27:53 -03:00
4 changed files with 394 additions and 1 deletions

View File

@@ -0,0 +1,100 @@
/* Problem URL: https://judge.beecrowd.com/en/problems/view/1242 */
#include <bits/stdc++.h>
using namespace std;
#define V vector
#define rmin(a, b) a = min(a, b)
#define rmax(a, b) a = max(a, b)
#define rep(i, lim) for (size_t i = 0; i < (lim); i++)
#define nrep(i, s, lim) for (size_t i = s; i < (lim); i++)
#define repv(i, v) for (auto &i : (v))
#define fillv(v) for (auto &itr_ : (v)) { cin >> itr_; }
#define sortv(v) sort(v.begin(), v.end())
#define all(v) (v).begin(), (v).end()
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using vvvvi = vector<vvvi>;
using ll = long long;
using vl = vector<ll>;
using vvl = vector<vl>;
using vvvl = vector<vvl>;
using vvvvl = vector<vvvl>;
template<class v>
auto operator<<(ostream &os, const vector<v> &vec)->ostream& {
os << vec[0];
for (size_t i = 1; i < vec.size(); i++) {
os << ' ' << vec[i];
}
os << '\n';
return os;
}
template<class v>
auto operator>>(istream &is, vector<v> &vec)->istream& {
for (auto &i : vec) {
is >> i;
}
return is;
}
template<class v>
auto operator<<(ostream &os, const vector<vector<v>> &vec)->ostream& {
for (auto &i : vec) {
os << i[0];
for (size_t j = 1; j < i.size(); j++) {
os << ' ' << i[j];
}
os << '\n';
}
return os;
}
template<class v>
auto operator>>(istream &is, vector<vector<v>> &vec)->istream& {
for (auto &i : vec) {
for (auto &j : i) {
is >> j;
}
}
return is;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
array<char, 256> map;
map['S'] = 'B';
map['B'] = 'S';
map['C'] = 'F';
map['F'] = 'C';
string s;
while (cin >> s) {
int ans = 0;
stack<char> st;
for (auto i : s) {
if (!st.empty() && st.top() == map[i]) {
st.pop();
ans++;
} else {
st.push(i);
}
}
cout << ans << '\n';
}
}

View File

@@ -87,7 +87,7 @@ int main()
}
vi cards;
ll total = 0;
int total = 0;
while (n--) {
string a;

View File

@@ -0,0 +1,116 @@
/* Problem URL: https://judge.beecrowd.com/en/problems/view/1062 */
#include <bits/stdc++.h>
using namespace std;
#define V vector
#define rmin(a, b) a = min(a, b)
#define rmax(a, b) a = max(a, b)
#define rep(i, lim) for (size_t i = 0; i < (lim); i++)
#define nrep(i, s, lim) for (size_t i = s; i < (lim); i++)
#define repv(i, v) for (auto &i : (v))
#define fillv(v) for (auto &itr_ : (v)) { cin >> itr_; }
#define sortv(v) sort(v.begin(), v.end())
#define all(v) (v).begin(), (v).end()
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using vvvvi = vector<vvvi>;
using ll = long long;
using vl = vector<ll>;
using vvl = vector<vl>;
using vvvl = vector<vvl>;
using vvvvl = vector<vvvl>;
template<class v>
auto operator<<(ostream &os, const vector<v> &vec)->ostream& {
os << vec[0];
for (size_t i = 1; i < vec.size(); i++) {
os << ' ' << vec[i];
}
os << '\n';
return os;
}
template<class v>
auto operator>>(istream &is, vector<v> &vec)->istream& {
for (auto &i : vec) {
is >> i;
}
return is;
}
template<class v>
auto operator<<(ostream &os, const vector<vector<v>> &vec)->ostream& {
for (auto &i : vec) {
os << i[0];
for (size_t j = 1; j < i.size(); j++) {
os << ' ' << i[j];
}
os << '\n';
}
return os;
}
template<class v>
auto operator>>(istream &is, vector<vector<v>> &vec)->istream& {
for (auto &i : vec) {
for (auto &j : i) {
is >> j;
}
}
return is;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
while (cin >> n, n != 0) {
int num;
while (cin >> num, num != 0) {
vi ans(n);
ans[0] = num;
nrep(i, 1, n) {
cin >> ans[i];
}
stack<int> tmp;
size_t now = 0;
for (int i = 1; i <= n; i++) {
if (i == ans[now]) {
now++;
continue;
}
while (!tmp.empty() && tmp.top() == ans[now]) {
tmp.pop();
now++;
}
if (i != ans[now]) {
tmp.push(i);
continue;
}
now++;
}
while (!tmp.empty() && tmp.top() == ans[now]) {
tmp.pop();
now++;
}
cout << (tmp.empty() ? "Yes\n" : "No\n");
}
cout << '\n';
}
}

View File

@@ -0,0 +1,177 @@
/* Problem URL: https://judge.beecrowd.com/en/problems/view/1055 */
#include <bits/stdc++.h>
using namespace std;
#define V vector
#define rmin(a, b) a = min(a, b)
#define rmax(a, b) a = max(a, b)
#define rep(i, lim) for (size_t i = 0; i < (lim); i++)
#define nrep(i, s, lim) for (size_t i = s; i < (lim); i++)
#define repv(i, v) for (auto &i : (v))
#define fillv(v) for (auto &itr_ : (v)) { cin >> itr_; }
#define sortv(v) sort(v.begin(), v.end())
#define all(v) (v).begin(), (v).end()
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using vvvvi = vector<vvvi>;
using ll = long long;
using vl = vector<ll>;
using vvl = vector<vl>;
using vvvl = vector<vvl>;
using vvvvl = vector<vvvl>;
template<class v>
auto operator<<(ostream &os, const vector<v> &vec)->ostream& {
os << vec[0];
for (size_t i = 1; i < vec.size(); i++) {
os << ' ' << vec[i];
}
os << '\n';
return os;
}
template<class v>
auto operator>>(istream &is, vector<v> &vec)->istream& {
for (auto &i : vec) {
is >> i;
}
return is;
}
template<class v>
auto operator<<(ostream &os, const vector<vector<v>> &vec)->ostream& {
for (auto &i : vec) {
os << i[0];
for (size_t j = 1; j < i.size(); j++) {
os << ' ' << i[j];
}
os << '\n';
}
return os;
}
template<class v>
auto operator>>(istream &is, vector<vector<v>> &vec)->istream& {
for (auto &i : vec) {
for (auto &j : i) {
is >> j;
}
}
return is;
}
void push_min_back(list<int> &ans, map<int, int> &nums)
{
auto itr = nums.begin();
ans.push_back(itr->first);
itr->second--;
if (itr->second == 0) {
nums.erase(itr);
}
}
void push_max_back(list<int> &ans, map<int, int> &nums)
{
auto itr = prev(nums.end());
ans.push_back(itr->first);
itr->second--;
if (itr->second == 0) {
nums.erase(itr);
}
}
void push_min_front(list<int> &ans, map<int, int> &nums)
{
auto itr = nums.begin();
ans.push_front(itr->first);
itr->second--;
if (itr->second == 0) {
nums.erase(itr);
}
}
void push_max_front(list<int> &ans, map<int, int> &nums)
{
auto itr = prev(nums.end());
ans.push_front(itr->first);
itr->second--;
if (itr->second == 0) {
nums.erase(itr);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
size_t i = 1;
while (t--) {
int n;
cin >> n;
list<int> ans;
map<int, int> nums;
while (n--) {
int num;
cin >> num;
nums[num]++;
}
map<int, int> tmp = nums;
push_max_back(ans, nums);
void (*push_to_list[])(list<int>&, map<int, int>&) {
push_min_back,
push_min_front,
push_max_back,
push_max_front
};
for (size_t i = 0; !nums.empty(); i = (i + 1) % 4) {
push_to_list[i](ans, nums);
}
ll sum = 0;
auto prev = ans.begin();
auto itr = next(prev);
while (itr != ans.end()) {
sum += abs(*prev - *itr);
prev++;
itr++;
}
swap(tmp, nums);
ans.clear();
push_min_back(ans, nums);
for (size_t i = 2; !nums.empty(); i = (i + 1) % 4) {
push_to_list[i](ans, nums);
}
ll tmp_sum = 0;
prev = ans.begin();
itr = next(prev);
while (itr != ans.end()) {
tmp_sum += abs(*prev - *itr);
prev++;
itr++;
}
cout << "Case " << i++ << ": " << max(sum, tmp_sum) << '\n';
}
}