Submission #608310

#TimeUsernameProblemLanguageResultExecution timeMemory
608310rrrr10000Seats (IOI18_seats)C++14
31 / 100
4070 ms78952 KiB
#include "seats.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> P; typedef vector<ll> vi; typedef vector<vi> vvi; typedef vector<P> vp; #define rep(i,n) for(ll i=0;i<(ll)(n);i++) #define REP(i,k,n) for(ll i=(ll)(k);i<(ll)(n);i++) #define all(a) a.begin(),a.end() #define pb emplace_back #define fi first #define se second template<class T> void out(T a){cout<<a<<endl;} template<class T> void outv(T v){rep(i,v.size()){if(i)cout<<' ';cout<<v[i];}cout<<endl;} template<class T> void outvv(T v){for(auto x:v)outv(x);} template<class T> bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;} const ll inf=1001001001001001001; vp v; ll n,h,w; vvi grid; vi tate,yoko; void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { h=H;w=W;n=H*W; rep(i,n)v.pb(R[i],C[i]); grid=vvi(h,vi(w)); rep(i,n)grid[v[i].fi][v[i].se]=i; tate=vi(w,inf); yoko=vi(h,inf); rep(i,h)rep(j,w){ chmin(tate[j],grid[i][j]); chmin(yoko[i],grid[i][j]); } } int swap_seats(int a, int b) { swap(v[a],v[b]); swap(grid[v[a].fi][v[a].se],grid[v[b].fi][v[b].se]); tate[v[a].se]=tate[v[b].se]=inf; yoko[v[a].fi]=yoko[v[b].fi]=inf; rep(i,h){ chmin(tate[v[a].se],grid[i][v[a].se]); chmin(tate[v[b].se],grid[i][v[b].se]); } rep(i,w){ chmin(yoko[v[a].fi],grid[v[a].fi][i]); chmin(yoko[v[b].fi],grid[v[b].fi][i]); } vi tl=tate,tr=tate,yu=yoko,yd=yoko; rep(i,w-1)chmin(tl[i+1],tl[i]); for(int i=w-1;i>0;i--)chmin(tr[i-1],tr[i]); rep(i,h-1)chmin(yu[i+1],yu[i]); for(int i=h-1;i>0;i--)chmin(yd[i-1],yd[i]); int ans=1; vi cur={v[0].se,v[0].se,v[0].fi,v[0].fi}; while(true){ ll s=(cur[1]-cur[0]+1)*(cur[3]-cur[2]+1); if(s==n)break; ll mi=inf,t; if(cur[0]>0&&chmin(mi,tl[cur[0]-1]))t=0; if(cur[1]<w-1&&chmin(mi,tr[cur[1]+1]))t=1; if(cur[2]>0&&chmin(mi,yu[cur[2]-1]))t=2; if(cur[3]<h-1&&chmin(mi,yd[cur[3]+1]))t=3; if(mi==s)ans++; if(t==0)cur[0]--; if(t==1)cur[1]++; if(t==2)cur[2]--; if(t==3)cur[3]++; } return ans; }

Compilation message (stderr)

seats.cpp: In function 'int swap_seats(int, int)':
seats.cpp:71:9: warning: 't' may be used uninitialized in this function [-Wmaybe-uninitialized]
   71 |         if(t==2)cur[2]--;
      |         ^~
#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...