#include "seats.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<int> r;
vector<int> c;
int h;
int w;
int n;
vector<int> r1;
vector<int> r2;
vector<int> c1;
vector<int> c2;
vector<int> pr;
int cnt=0;
vector<int> wg;
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
h=H;
w=W;
n=H*W;
r = R;
c=C;
r1.resize(n,r[0]);
r2.resize(n,r[0]);
c1.resize(n,c[0]);
c2.resize(n,c[0]);
pr.resize(n,1);
wg.resize(n);
wg[0]=1;
cnt=1;
for(int i=1;i<n;i++){
r1[i]=min(r1[i-1],r[i]);
r2[i]=max(r2[i-1],r[i]);
c1[i]=min(c1[i-1],c[i]);
c2[i]=max(c2[i-1],c[i]);
pr[i]=pr[i-1];
if((r2[i]-r1[i]+1)*(c2[i]-c1[i]+1)==(i+1)){
pr[i]++;
wg[i]=1;
cnt++;
}
}
}
int swap_seats(int a, int b) {
if(b>a)swap(a,b);
swap(r[a],r[b]);swap(c[a],c[b]);
for(int i=a;i<=b;i++){
if(i>0){
r1[i]=min(r1[i-1],r[i]);
r2[i]=max(r2[i-1],r[i]);
c1[i]=min(c1[i-1],c[i]);
c2[i]=max(c2[i-1],c[i]);
}
else{
r1[i]=r[0];
r2[i]=r[0];
c1[i]=c[0];
c2[i]=c[0];
}
cnt-=wg[i];
wg[i]=0;
if((r2[i]-r1[i]+1)*(c2[i]-c1[i]+1)==(i+1)){
wg[i]=1;
cnt++;
}
}
return cnt;
}