Submission #13024

#TimeUsernameProblemLanguageResultExecution timeMemory
13024gs14004CATS (NOI14_cats)C++98
0 / 25
1500 ms40144 KiB
#include <cstdio>

struct cat_stack{
    int stack[5000005], sz;
    bool key;
    void filp(){
        key ^= 1;
    }
    int top(){
        if(sz == 0) return key;
        return stack[sz-1]^key;
    }
    void pop(){
        if(sz != 0) sz--;
    }
    void push(int x){
        stack[sz++] = x;
    }
    void add(){
        int x = top();
        pop();
        x += top();
        pop();
        push(x);
    }
}s1,s2;

int main(){
    int q;
    scanf("%d",&q);
    while (q--) {
        int x,l,n;
        scanf("%d %d %d",&x,&l,&n);
        while (x>0) {
            s2.push(s1.top());
            s1.pop();
            s1.filp();
            if(s2.top() > l){
                x--;
                if(x == 0){
                    printf("%d\n",s2.top());
                    break;
                }
            }
            else{
                s2.push(2*n);
                s2.add();
                s1.push(s2.top()^(s1.key^1));
                s1.push(s2.top()^(s1.key^1));
                s2.pop();
                s2.pop();
            }
        }
    }
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...