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 "seats.h"
#include <iostream>
using namespace std;
long long int num=1,ans[1000005],x[1000005],y[1000005],lx[1000005],rx[1000005],ly[1000005],ry[1000005],n;
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
n=H*W;
for(int i=0;i<n;i++)
{
x[i]=R[i];
y[i]=C[i];
}
ans[0]=1,lx[0]=x[0],rx[0]=x[0],ly[0]=y[0],ry[0]=y[0];
for(int i=1;i<n;i++)
{
lx[i]=min(x[i],lx[i-1]);
rx[i]=max(x[i],rx[i-1]);
ly[i]=min(y[i],ly[i-1]);
ry[i]=max(y[i],ry[i-1]);
//cout<<lx<<" "<<rx<<" "<<ly<<" "<<ry<<endl;
if((rx[i]-lx[i]+1)*(ry[i]-ly[i]+1)==i+1)
{
ans[i]=1;
num++;
}
}
}
int swap_seats(int a, int b) {
swap(x[a],x[b]);
swap(y[a],y[b]);
if(a==0)a=1;
ans[0]=1,lx[0]=x[0],rx[0]=x[0],ly[0]=y[0],ry[0]=y[0];
for(int i=a;i<=b;i++)
{
lx[i]=min(x[i],lx[i-1]);
rx[i]=max(x[i],rx[i-1]);
ly[i]=min(y[i],ly[i-1]);
ry[i]=max(y[i],ry[i-1]);
//cout<<num<<" "<<ans[i]<<" "<<i<<" "<<lx[i]<<" "<<rx[i]<<" "<<ly[i]<<" "<<ry[i]<<endl;
if((rx[i]-lx[i]+1)*(ry[i]-ly[i]+1)==i+1)
{
if(ans[i]==0)
{
num++;
ans[i]=1;
}
}
else if(ans[i]==1)
{
num--;
ans[i]=0;
}
//cout<<num<<endl;
}
return num;
}
# | 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... |