Submission #13032

#TimeUsernameProblemLanguageResultExecution timeMemory
13032gs14004CATS (NOI14_cats)C++98
4 / 25
1500 ms20612 KiB
#include <cstdio>
#include <cstring>

struct cat_stack{
    int stack[5000005], sz;
    bool key;
    void filp(){
        key ^= 1;
        for(int i=0; i<sz; i++) stack[i] ^= 1;
    }
    int top(){
        if(sz == 0) return key;
        return stack[sz-1];
    }
    void pop(){
        if(sz != 0) sz--;
    }
    void push(int x){
        stack[sz++] = x;
    }
    void print(){
        puts("stack status from bottom to top");
        for(int i=0; i<sz; i++) printf("%d\n",stack[i]);
    }
}s1;

int main(){
    int q;
    scanf("%d",&q);
    while (q--) {
        int x,l,n;
        scanf("%d %d %d",&x,&l,&n);
        int s2 = 0;
        s1.sz = 0;
        s1.key = 0;
        while (x) {
            s2 = s1.top();
            s1.pop();
            s1.filp();
            while (s2 <= l) {
                s2 += 2*n;
                s1.push(s2);
                s1.push(s2);
                s2 = s1.top();
                s1.pop();
                s1.filp();
            }
            if(s2 > l){
                x--;
                if(x == 0){
                    printf("\n%d\n",s2);
                    break;
                }
            }
        }
    }
}
#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...