#include <bits/stdc++.h>
#include "seats.h"
using namespace std;
std::vector<int> r,c;
const int MAXN=1e6+6;
bool pos[MAXN];
int ans=0,pref[MAXN][4];
void update(int l,int rt){
for(int i=l;i<=rt;i++){
pref[i][0]=pref[i][1]=r[i];
pref[i][2]=pref[i][3]=c[i];
if(i){
pref[i][0]=min(pref[i][0],pref[i-1][0]);
pref[i][1]=max(pref[i][1],pref[i-1][1]);
pref[i][2]=min(pref[i][2],pref[i-1][2]);
pref[i][3]=max(pref[i][3],pref[i-1][3]);
}
// if(pos[i])ans--;
pos[i]=0;
if((pref[i][1]-pref[i][0]+1)*(pref[i][3]-pref[i][2]+1)==i+1)pos[i]=1;
if(pos[i])ans++;
}
}
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
r=R;
c=C;
update(0,R.size()-1);
}
int swap_seats(int a, int b) {
swap(r[a],r[b]); swap(c[a],c[b]);
update(0,r.size()-1);
return ans;
}