#include "seats.h"
using namespace std;
#include <cstdio>
#include <cstdlib>
#include <vector>
std::vector<int> r;
int hmax[1000005];
int hmin[1000005];
int wmax[1000005];
int wmin[1000005];
int x[1000005];
int y[1000005];
int cnt=0;
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
int n=H*W;
for(int i=0;i<n;i++)
{
x[i]=R[i];
y[i]=C[i];
}
hmax[0]=x[0];
hmin[0]=x[0];
wmax[0]=y[0];
wmin[0]=y[0];
cnt=1;
for(int i=1;i<=H*W;i++)
{
hmax[i]=max(x[i],hmax[i-1]);
hmin[i]=min(x[i],hmin[i-1]);
wmax[i]=max(y[i],wmax[i-1]);
wmin[i]=min(y[i],wmin[i-1]);
if((hmax[i]-hmin[i]+1)*(wmax[i]-wmin[i]+1)==i+1)
{
cnt++;
}
}
}
int swap_seats(int a, int b) {
if(a>b)
{
swap(a,b);
}
for(int i=a;i<=b;i++)
{
if((hmax[i]-hmin[i]+1)*(wmax[i]-wmin[i]+1)==i+1)
{
cnt--;
}
}
swap(x[a],x[b]);
swap(y[a],y[b]);
if(a==0)
{
hmax[0]=x[0];
hmin[0]=x[0];
wmax[0]=y[0];
wmin[0]=y[0];
cnt++;
}
for(int i=max(1,a);i<=b;i++)
{
hmax[i]=max(x[i],hmax[i-1]);
hmin[i]=min(x[i],hmin[i-1]);
wmax[i]=max(y[i],wmax[i-1]);
wmin[i]=min(y[i],wmin[i-1]);
if((hmax[i]-hmin[i]+1)*(wmax[i]-wmin[i]+1)==i+1)
{
cnt++;
}
}
return cnt;
}