#include "seats.h"
#include <iostream>
using namespace std;
const int N=1e6+100;
int mxi[N],mxa[N],myi[N],mya[N],tot=0;
vector<int> R,C;
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
::R=R;
::C=C;
mxi[0]=1e9;
mxa[0]=-mxi[0];
myi[0]=1e9;
mya[0]=-myi[0];
for(int i=0;i<R.size();i++)
{
mxi[i+1]=min(mxi[i],R[i]);
mxa[i+1]=max(mxa[i],R[i]);
myi[i+1]=min(myi[i],C[i]);
mya[i+1]=max(mya[i],C[i]);
// cout<<(mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1)<<' '<<i+1<<endl;
if((mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1) == i+1)
{
tot++;
}
}
}
int swap_seats(int a, int b) {
swap(R[a],R[b]);
swap(C[a],C[b]);
for(int i=a;i<=b;i++)
{
if((mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1) == i+1)
{
tot--;
}
mxi[i+1]=min(mxi[i],R[i]);
mxa[i+1]=max(mxa[i],R[i]);
myi[i+1]=min(myi[i],C[i]);
mya[i+1]=max(mya[i],C[i]);
if((mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1) == i+1)
{
tot++;
}
}
return tot;
}