This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
set<int> rw[10001],cl[10001];
vector<int> r,c;
int h,w;
void give_initial_chart(int H, int W, vector<int> R, vector<int> C){
h = H;
w = W;
for(int i = 0;i<H*W;i++){
r.push_back(R[i]);
c.push_back(C[i]);
rw[R[i]].insert(i);
cl[C[i]].insert(i);
}
}
int swap_seats(int a, int b){
rw[r[a]].erase(a);
cl[c[a]].erase(a);
rw[r[b]].erase(b);
cl[c[b]].erase(b);
rw[r[b]].insert(a);
cl[c[b]].insert(a);
rw[r[a]].insert(b);
cl[c[a]].insert(b);
swap(r[a],r[b]);
swap(c[a],c[b]);
vector<array<int,3>> ev;
for(int i = 0;i<h;i++){
ev.push_back({*rw[i].begin(),i,0});
}
for(int i = 0;i<w;i++){
ev.push_back({*cl[i].begin(),i,1});
}
sort(ev.begin(),ev.end());
int mnx = 1e9 , mxx = -1e9;
int mny = 1e9 , mxy = -1e9;
int ans = 1;
int it = 0;
while(it<ev.size()){
int it2 = it;
while(it2<ev.size()&&ev[it2][0]==ev[it][0]){
if(ev[it2][2]==0){
mnx = min(mnx,ev[it2][1]);
mxx = max(mxx,ev[it2][1]);
}else{
mny = min(mny,ev[it2][1]);
mxy = max(mxy,ev[it2][1]);
}
it2++;
}
if(it2==ev.size())break;
if((mxx-mnx+1)*(mxy-mny+1)==ev[it2][0]){
ans++;
}
it = it2;
}
return ans;
}
Compilation message (stderr)
seats.cpp: In function 'int swap_seats(int, int)':
seats.cpp:40:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
40 | while(it<ev.size()){
| ~~^~~~~~~~~~
seats.cpp:42:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
42 | while(it2<ev.size()&&ev[it2][0]==ev[it][0]){
| ~~~^~~~~~~~~~
seats.cpp:52:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
52 | if(it2==ev.size())break;
| ~~~^~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |