CSES - Shared codeLink to this code:
https://cses.fi/paste/1aaa7e1ff19c1a4272be82/
// not mine
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define dbg(x) cout << #x << " = " << x << "\n";
#define all(x) (x).begin(), (x).end()
#define ff first
#define ss second
#define srt(s) sort(all(s))
#define S size()
#define f(i, m, n) for (ll i = m; i < n; i++)
void solve()
{
ll A, B;
cin >> A >> B;
ll m[200005], n[200005];
f(i, 0, A)
{
ll k;
cin >> k;
m[i+1]=k;n[k]=i+1;
}
ll ans=1;f(i,1,A)if(n[i]>n[i+1])ans++;
f(i, 0, B)
{
ll x, y;
cin >> x >> y;
ll a=m[x],b=m[y];
if(a>1 and n[a]<n[a-1])ans--;
if(a<A and n[a+1]<n[a])ans--;
if(b>1)if(b-1!=a)if(n[b]<n[b-1])ans--;
if(b<A)if(b+1!=a)if(n[b+1]<n[b])ans--;
swap(m[x],m[y]);swap(n[a],n[b]);
if(a>1)if(n[a]<n[a-1])ans++;
if(a<A)if(n[a+1]<n[a])ans++;
if(b>1)if(b-1!=a)if(n[b]<n[b-1])ans++;
if(b<A)if(b+1!=a)if(n[b+1]<n[b])ans++;
cout<<ans<<'\n';
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
ll t = 1;
while (t--)
solve();
return 0;
}