Submission #74606

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
746062018-09-05 05:27:01cubecube1000즐거운 사진 수집 (JOI13_collecting)C++14
100 / 100
1643 ms239848 KiB
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef unsigned long long ll;
typedef pair<int,int> pii;
typedef pair<ll, ll> pll;
const int MAX=(1<<20)+5;
const ll INFLL=0x3f3f3f3f3f3f3f;
bool dist[2][MAX];
int seg[2][MAX],cum[2][MAX],n,q;
int mp[MAX];
ll ans;
void update(int t1,int t2,int val){
//printf("%d %d %d\n",t1,t2,val);
if(t2<=0||t2>=(1<<n)) return;
int v=t2&(-t2);
if(val){if(seg[t1][t2]++==0) cum[t1][v]++, ans+=(ll)((1<<(n-mp[v]-1))-cum[!t1][v]);}
else{if(--seg[t1][t2]==0) cum[t1][v]--, ans-=(ll)((1<<(n-mp[v]-1))-cum[!t1][v]);}
update(t1,(t2^v)|(v<<1),val);
}
int main(){
scanf("%d%d",&n,&q);
for(int i=0;i<n;i++) mp[1<<i]=i;
for(int i=0;i<q;i++){
int t1,t2;
scanf("%d%d",&t1,&t2);
dist[t1][t2]=!dist[t1][t2],dist[t1][t2-1]=!dist[t1][t2-1];
update(t1,t2,dist[t1][t2]); update(t1,t2-1,dist[t1][t2-1]);
printf("%lld\n",ans*4ll+1ll);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

collecting.cpp: In function 'int main()':
collecting.cpp:23:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&q);
     ~~~~~^~~~~~~~~~~~~~
collecting.cpp:27:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&t1,&t2);
         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...