This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ll long long
#define all(aaa) aaa.begin(), aaa.end()
using namespace std;
struct MyStack {
vector<int> v;
int flip = 0;
void push(int x) {
v.push_back(x);
}
int pop() {
if (!v.empty()) {
int x = v.back();
v.pop_back();
return x;
}
return flip;
}
int top() {
return v.empty() ? flip : v.back();
}
};
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int q;
cin >> q;
while (q--) {
ll x, l, n;
cin >> x >> l >> n;
MyStack s1, s2;
bool ok = false;
int counter = x;
while (counter > 0) {
s2.push(s1.pop());
for (int &i : s1.v)
i ^= 1;
s1.flip ^= 1;
if (s2.top() > l) {
ok = true;
counter--;
}
else {
if (ok)
exit(1);
if (s2.v.empty())
s2.v.push_back(2 * n);
else
s2.v.back() += 2 * n;
s1.push(s2.top());
s1.push(s2.top());
s2.pop();
s2.pop();
}
// for (int x : s1.v)
// cout << x << " ";
// cout << "\n";
// for (int x : s2.v)
// cout << x << " ";
// cout << "\n";
// cout << "\n";
}
cout << s2.top() << "\n";
// COUNTER = X
// WHILE COUNTER > 0
// S2 PUSH T1 //Push the top element of S1 onto S2
// S1 POP //Pop the top element of S1
// FLIP LAST BINARY BIT OF ALL NUMBERS IN S1
// IF T2 > L
// COUNTER = COUNTER - 1
// IF COUNTER == 0 PRINT T2
// ELSE
// S2 PUSH N
// S2 PUSH N
// S2 ADD
// S2 ADD
// S1 PUSH T2
// S1 PUSH T2
// S2 POP
// S2 POP
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |