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>
#define MAX 1000010
#define INF 1000000000
using namespace std;
typedef pair<int,int> pii;
typedef long long int lli;
typedef pair<pii,pii> rectangle;
int N, M;
int curAns;
bool can[MAX];
pii pos[MAX];
rectangle lim[MAX];
vector<int> v[MAX];
void update(int l, int r)
{
for(int g = l ; g <= r ; g++)
{
int& mxX = lim[g].first.first;
int& mnX = lim[g].first.second;
int& mxY = lim[g].second.first;
int& mnY = lim[g].second.second;
mxX = max(pos[g].first , lim[g - 1].first.first);
mnX = min(pos[g].first , lim[g - 1].first.second);
mxY = max(pos[g].second , lim[g - 1].second.first);
mnY = min(pos[g].second , lim[g - 1].second.second);
//printf("-> %d ============ %d %d %d %d\n",g,mxX,mnX,mxY,mnY);
if((mxX - mnX + 1)*(mxY - mnY + 1) == g)
curAns++, can[g] = true;
}
}
void give_initial_chart(int H, int W, vector<int> R, vector<int> C)
{
N = H; M = W;
for(int g = 1 ; g <= N*M ; g++)
pos[g] = {R[g - 1] , C[g - 1]};
lim[0] = {{-INF , INF} , {-INF , INF}};
update(1 , N*M);
//printf("-> %d\n",curAns);
}
int swap_seats(int a, int b)
{
if(a > b) swap(a , b);
a++; b++;
swap(pos[a] , pos[b]);
for(int g = a ; g <= b ; g++)
{
if(can[g]) curAns--;
can[g] = false;
}
update(a , b);
//printf(" -> %d %d\n",pos[0].first,pos[0].second);
return curAns;
}
/*int main()
{
int nn, mm, qq;
scanf("%d %d %d",&nn,&mm,&qq);
vector<int> rr(nn*mm), cc(nn*mm);
for(int g = 0 ; g < nn*mm ; g++)
scanf("%d %d",&rr[g],&cc[g]);
give_initial_chart(nn , mm , rr , cc);
for(int g = 0 ; g < qq ; g++)
{
int n1, n2;
scanf("%d %d",&n1,&n2);
printf("%d",swap_seats(n1 , n2));
}
}*/
# | 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... |