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>
#include "seats.h"
#define F first
#define S second
#define SZ(a) ((int)(a).size())
#define PB push_back
#define ALL(a) (a).begin(), (a).end()
using namespace std;
typedef long long ll;
typedef pair<ll, ll> ii;
std::vector<ii> p, mi, mx;
int h, w;
ii mip(ii a, ii b){
return {min(a.F,b.F),min(a.S,b.S)};
}
ii mxp(ii a, ii b){
return {max(a.F,b.F),max(a.S,b.S)};
}
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
h=H; w=W;
mi.resize(h*w);
mx.resize(h*w);
p.resize(h*w);
for(int i=0; i<h*w; i++)
p[i]={R[i],C[i]};
mi[0]=mx[0]=p[0];
for(int i=1; i<h*w; i++){
mi[i]=mip(mi[i-1],p[i]);
mx[i]=mxp(mx[i-1],p[i]);
}
}
int swap_seats(int a, int b) {
if(a>b)
swap(a,b);
swap(p[a], p[b]);
if(a==0)
mi[0]=mx[0]=p[0];
for(int i=max(a,1); i<h*w; i++){
if(mi[i]==mip(mi[i-1],p[i]) && mx[i]==mxp(mx[i-1],p[i])){
if(i>=b)
break;
else
i=b;
}
mi[i]=mip(mi[i-1],p[i]);
mx[i]=mxp(mx[i-1],p[i]);
}
int r=0;
for(int i=0; i<h*w; i++)
if((mx[i].F-mi[i].F+1)*(mx[i].S-mi[i].S+1)==i+1)
r++;
return r;
}
# | 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... |