Submission #16826

#TimeUsernameProblemLanguageResultExecution timeMemory
16826gs14004즐거운 사진 수집 (JOI13_collecting)C++14
30 / 100
5000 ms9912 KiB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <limits.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <algorithm>
#include <string>
#include <functional>
#include <vector>
#include <numeric>
#include <deque>
#include <utility>
#include <bitset>
#include <iostream>
using namespace std;
typedef long long lint;
typedef long double llf;
typedef pair<int, int> pi;

int n, q;
int px[1<<20], py[1<<20];

int main(){
    scanf("%d %d",&n,&q);
    for(int i=0; i<q; i++){
        int t, p;
        scanf("%d %d",&t, &p);
        p--;
        if(t) px[p] ^= 1;
        else py[p] ^= 1;
        int ret = 0;
        for(int i=0; i<n; i++){
            int buck = (2 << i);
            int cntx = 0;
            for(int j=0; j<(1<<n); j+=buck){
                int bad = 0;
                for(int k=j; k<j+buck-1; k++){
                    if(px[k] != px[k+1]){
                        bad = 1;
                        break;
                    }
                }
                if(bad) cntx++;
            }
            int cnty = 0;
            for(int j=0; j<(1<<n); j+=buck){
                int bad = 0;
                for(int k=j; k<j+buck-1; k++){
                    if(py[k] != py[k+1]){
                        bad = 1;
                        break;
                    }
                }
                if(bad) cnty++;
            }
            int rcnt = (1 << (n - 1 - i));
            ret += rcnt * rcnt - (rcnt - cntx) * (rcnt - cnty);
        }
        printf("%d\n",ret * 4 + 1);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...