Submission #991610

#TimeUsernameProblemLanguageResultExecution timeMemory
991610LalicSeats (IOI18_seats)C++17
17 / 100
4086 ms48300 KiB
#include "seats.h" #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define all(x) x.begin(), x.end() #define allr(x) x.rbegin(), x.rend() #define mp make_pair typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int INF = 0x3f3f3f3f; const int MAXN = 1e6+10; pii valR[MAXN], valC[MAXN]; int ans=1; vector<int> r, c; void give_initial_chart(int H, int W, vector<int> R, vector<int> C) { valR[0]={R[0], R[0]}; valC[0]={C[0], C[0]}; r=R; c=C; for(int i=1;i<(int)R.size();i++){ valR[i]={min(valR[i-1].fi, R[i]), max(valR[i-1].se, R[i])}; valC[i]={min(valC[i-1].fi, C[i]), max(valC[i-1].se, C[i])}; if((valR[i].se-valR[i].fi+1)*(valC[i].se-valC[i].fi+1)==i+1) ans++; } } int swap_seats(int a, int b) { if(a>b) swap(a, b); pii x, y; if(!a) x={r[b], r[b]}, y={c[b], c[b]}; else x=valR[a-1], y=valC[a-1]; swap(r[a], r[b]); swap(c[a], c[b]); for(int i=a;i<=b;i++){ if((valR[i].se-valR[i].fi+1)*(valC[i].se-valC[i].fi+1)==i+1) ans--; x.fi=min(x.fi, r[i]); x.se=max(x.se, r[i]); y.fi=min(y.fi, c[i]); y.se=max(y.se, c[i]); valR[i]=x; valC[i]=y; if((valR[i].se-valR[i].fi+1)*(valC[i].se-valC[i].fi+1)==i+1) 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...