Submission #908668

#TimeUsernameProblemLanguageResultExecution timeMemory
908668JakobZorzSeats (IOI18_seats)C++17
11 / 100
4096 ms103336 KiB
#include"seats.h" #include<iostream> #include<algorithm> using namespace std; int w,h; vector<int>x,y; vector<vector<int>>mat; vector<int>arr1,arr2; // 1 black and 3 black int get_mat(int x,int y){ if(x<0||x>=w||y<0||y>=h) return w*h; return mat[x][y]; } void upd_sq(int x,int y,int mul){ // 1 for adding and -1 for removing vector<int>vals={get_mat(x,y),get_mat(x+1,y),get_mat(x,y+1),get_mat(x+1,y+1)}; sort(vals.begin(),vals.end()); /*for(int i:vals) cout<<i<<" "; cout<<endl;*/ for(int i=vals[0];i<vals[1];i++) arr1[i]+=mul; for(int i=vals[2];i<vals[3];i++) arr2[i]+=mul; } void give_initial_chart(int H,int W,vector<int>R,vector<int>C){ x=C; y=R; h=H; w=W; mat=vector<vector<int>>(w,vector<int>(h)); arr1=vector<int>(h*w,0); arr2=vector<int>(h*w,0); for(int i=0;i<w*h;i++) mat[x[i]][y[i]]=i; for(int x=-1;x<w;x++) for(int y=-1;y<h;y++) upd_sq(x,y,1); } int swap_seats(int a,int b){ upd_sq(x[a]-1,y[a]-1,-1); upd_sq(x[a]-1,y[a],-1); upd_sq(x[a],y[a]-1,-1); upd_sq(x[a],y[a],-1); upd_sq(x[b]-1,y[b]-1,-1); upd_sq(x[b]-1,y[b],-1); upd_sq(x[b],y[b]-1,-1); upd_sq(x[b],y[b],-1); swap(mat[x[a]][y[a]],mat[x[b]][y[b]]); swap(x[a],x[b]); swap(y[a],y[b]); upd_sq(x[a]-1,y[a]-1,1); upd_sq(x[a]-1,y[a],1); upd_sq(x[a],y[a]-1,1); upd_sq(x[a],y[a],1); upd_sq(x[b]-1,y[b]-1,1); upd_sq(x[b]-1,y[b],1); upd_sq(x[b],y[b]-1,1); upd_sq(x[b],y[b],1); int res=0; for(int i=0;i<w*h;i++) if(arr1[i]==4&&arr2[i]==0) res++; return res; }
#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...