#include "seats.h"
#include <bits/stdc++.h>
using namespace std;
const int M = 1e6 + 1;
vector<int> r[2];
int mn[M][2], mx[M][2], val[M], ans;
void ver(int x)
{
ans-=val[x], val[x]=0;
if ((mx[x][0]-mn[x][0]+1)*(mx[x][1]-mn[x][1]+1)==x+1) val[x]=1;
ans+=val[x];
}
void give_initial_chart(int h, int w, vector<int> R, vector<int> C)
{
r[0] = R, r[1]=C;
mn[0][0]=mx[0][0]=r[1][0], mn[0][1]=mx[0][1]=r[1][0];
ver(1);
for (int i=1;i<h*w;i++)
{
for (int j=0;j<=1;j++)
mn[i][j]=min(mn[i-1][j],r[j][i]), mx[i][j]=max(mx[i-1][j],r[j][i]);
ver(i);
}
}
int swap_seats(int a, int b)
{
swap(r[0][a],r[0][b]), swap(r[1][a],r[1][b]);
if (!a)
{
for (int j=0;j<=1;j++) mn[0][j]=mx[0][j]=r[j][0];
}
else
{
for (int j=0;j<=1;j++)
mn[a][j]=min(mn[a-1][j],r[j][a]), mx[a][j]=max(mx[a-1][j],r[j][a]);
}
ver(a);
for (int i=a+1;i<=b;i++)
for (int j=0;j<=1;j++)
mn[i][j]=min(mn[i-1][j],r[j][i]), mx[i][j]=max(mx[i-1][j],r[j][i]), ver(i);
return ans;
}