Submission #114342

#TimeUsernameProblemLanguageResultExecution timeMemory
114342tinjyuSeats (IOI18_seats)C++14
0 / 100
729 ms262144 KiB
#include "seats.h" #include <iostream> using namespace std; vector<int> r; long long int lx,rx,ly,ry,c,d,x[1000005],y[1000005],n,maxxtree[2000005],minxtree[2000005],maxytree[2000005],minytree[2000005]; int build(int s,int e,int t) { if(s==e) { maxxtree[t]=x[e]; minxtree[t]=x[e]; maxytree[t]=y[e]; minytree[t]=y[e]; return 0; } else { build(s,(s+e)/2,t*2); build((s+e)/2+1,e,t*2+1); maxxtree[t]=max(maxxtree[t*2],maxxtree[t*2+1]); minxtree[t]=min(minxtree[t*2],minxtree[t*2+1]); maxytree[t]=max(maxytree[t*2],maxytree[t*2+1]); minytree[t]=max(minytree[t*2],minytree[t*2+1]); return 0; } } int change(int s,int e,int t) { if(s==e) { maxxtree[t]=x[e]; minxtree[t]=x[e]; maxytree[t]=y[e]; minytree[t]=y[e]; return 0; } else if(s>d || e<c)return 0; else { change(s,(s+e)/2,t*2); change((s+e)/2+1,e,t*2+1); maxxtree[t]=max(maxxtree[t*2],maxxtree[t*2+1]); minxtree[t]=min(minxtree[t*2],minxtree[t*2+1]); maxytree[t]=max(maxytree[t*2],maxytree[t*2+1]); minytree[t]=max(minytree[t*2],minytree[t*2+1]); } } int find(int s,int e,int t) { if(c>e || d<s)return 0; else if(s<=c && d<=e) { lx=min(minxtree[t],lx); rx=max(maxxtree[t],rx); ly=min(minytree[t],ly); ry=max(maxytree[t],ry); } else { find(s,(s+e)/2,t*2); find((s+e)/2+1,e,t*2); } } 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]; } build(0,n-1,1); } int swap_seats(int a, int b) { swap(x[a],x[b]); swap(y[a],y[b]); if(a>b)swap(a,b); c=a,d=b; change(0,n-1,1); int ans=1; lx=x[0],rx=x[0],ly=y[0],ry=y[0]; for(int i=1;i<n;i++) { lx=min(x[i],lx); rx=max(x[i],rx); ly=min(y[i],ly); ry=max(y[i],ry); //cout<<lx<<" "<<rx<<" "<<ly<<" "<<ry<<endl; if((rx-lx+1)*(ry-ly+1)==i+1)ans++; else { c=i,d=(rx-lx+1)*(ry-ly+1)-1; find(0,n-1,1); } } return ans; }

Compilation message (stderr)

seats.cpp: In function 'int change(int, int, int)':
seats.cpp:47:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
seats.cpp: In function 'int find(int, int, int)':
seats.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...