Submission #1014786

#TimeUsernameProblemLanguageResultExecution timeMemory
1014786MalixSeats (IOI18_seats)C++14
0 / 100
3132 ms56212 KiB
#include "seats.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> tii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define MP make_pair #define LSOne(s) ((s)&(-s)) ll INF=1e18+10; int inf=1e9+10; ll M=1e9+7; pii arr; int n,m; vi p; int ans; vi minx,miny,maxx,maxy; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { REP(i,0,H*W)arr.PB({R[i],C[i]}); n=H;m=W; p.resize(n*m+1,0); minx.resize(n*m+1,arr[0].F); maxx.resize(n*m+1,arr[0].F); miny.resize(n*m+1,arr[0].S); maxy.resize(n*m+1,arr[0].S); ans=1; p[0]=1; int x1=arr[0].F,x2=arr[0].F,y1=arr[0].S,y2=arr[0].S; REP(i,1,n*m){ x1=min(x1,arr[i].F);minx[i]=x1; x2=max(x2,arr[i].F);maxx[i]=x2; y1=min(y1,arr[i].S);miny[i]=y1; y2=max(y2,arr[i].S);maxy[i]=y2; if(i+1==(y2-y1+1)*(x2-x1+1)){ ans++; p[i]=1; } } } int swap_seats(int a, int b) { swap(arr[a],arr[b]); if(a>b)swap(a,b); int x1,x2,y1,y2; if(a>0)x1=minx[a-1],x2=maxx[a-1],y1=miny[a-1],y2=maxy[a-1]; else x1=arr[0].F,x2=arr[0].F,y1=arr[0].S,y2=arr[0].S; REP(i,a,b+1){ x1=min(x1,arr[i].F); x2=max(x2,arr[i].F); y1=min(y1,arr[i].S); y2=max(y2,arr[i].S); if(i+1==(y2-y1+1)*(x2-x1+1)){ if(p[i]==1)continue; else p[i]=1; ans++; } else{ if(p[i]==0)continue; p[i]=0; ans--; } } return ans; }
#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...