Submission #113640

#TimeUsernameProblemLanguageResultExecution timeMemory
113640tinjyuSeats (IOI18_seats)C++14
0 / 100
4009 ms62988 KiB
#include "seats.h" #include <iostream> using namespace std; long long int num=1,ans[1000005],x[1000005],y[1000005],lx[1000005],rx[1000005],ly[1000005],ry[1000005],n; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { n=H*W; for(int i=0;i<n;i++) { x[i]=R[i]; y[i]=C[i]; } ans[0]=1,lx[0]=x[0],rx[0]=x[0],ly[0]=y[0],ry[0]=y[0]; for(int i=1;i<n;i++) { lx[i]=min(x[i],lx[i-1]); rx[i]=max(x[i],rx[i-1]); ly[i]=min(y[i],ly[i-1]); ry[i]=max(y[i],ry[i-1]); //cout<<lx<<" "<<rx<<" "<<ly<<" "<<ry<<endl; if((rx[i]-lx[i]+1)*(ry[i]-ly[i]+1)==i+1) { ans[i]=1; num++; } } } int swap_seats(int a, int b) { swap(x[a],x[b]); swap(y[a],y[b]); if(a==0)a=1; ans[0]=1,lx[0]=x[0],rx[0]=x[0],ly[0]=y[0],ry[0]=y[0]; for(int i=a;i<=b;i++) { lx[i]=min(x[i],lx[i-1]); rx[i]=max(x[i],rx[i-1]); ly[i]=min(y[i],ly[i-1]); ry[i]=max(y[i],ry[i-1]); //cout<<num<<" "<<ans[i]<<" "<<i<<" "<<lx[i]<<" "<<rx[i]<<" "<<ly[i]<<" "<<ry[i]<<endl; if((rx[i]-lx[i]+1)*(ry[i]-ly[i]+1)==i+1) { if(ans[i]==0) { num++; ans[i]=1; } } else if(ans[i]==1) { num--; ans[i]=0; } //cout<<num<<endl; } return num; }
#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...