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 int long long
#define P(x) do {if(debug) cout << x << endl;} while(false)
#define H(x) P(#x << ": " << x)
#define FR(i, a, b) for(int i = (a); i < (b); ++i)
#define F(i, n) FR(i, 0, n)
#define DR(i, a, b) for(int i = (b); i --> (a);)
#define D(i, n) DR(i, 0, n)
#define S(s) (int)(s).size()
#define ALL(x) (x).begin(), (x).end()
#define MI(x, a) (x) = min(x, a)
#define MA(x, a) (x) = max(x, a)
#define V vector
#define pb push_back
#define mp make_pair
using namespace std;
const bool debug = 1;
int top_(stack<int>& st){
if(st.empty()) return 0;
return st.top();
}
void print(stack<int> st, int xr){
while(!st.empty()){
cout<<(st.top()^xr)<<" ";
st.pop();
}
cout<<xr<<endl;
}
int f(int X, int L, int N){
stack<int> S1, S2;
int counter = X;
int xr = 0;
while(counter>0){
//H(counter);
//print(S1, xr);
S2.push(top_(S1) ^ xr);
if(!S1.empty()) S1.pop();
xr = (xr^1);
if(top_(S2)>L){
counter--;
if(counter == 0) return top_(S2);
}
else{
int a = top_(S2);
if(!S2.empty()) S2.pop();
S2.push(a+2*N);
S1.push(top_(S2)^xr);
S1.push(top_(S2)^xr);
if(!S2.empty()) S2.pop();
if(!S2.empty()) S2.pop();
}
}
return -12345;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int Q;
cin>>Q;
F(i, Q){
int X, L, N;
cin>>X>>L>>N;
cout<<f(X, L, N)<<"\n";
}
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... |