rt,另外求调我的随机赋值:
#include<bits/stdc++.h>
using namespace std;
int n,q,a[300001],x,y,b[300001];
long long ans;
map<long long,bool>mp;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
b[a[i]]=i;
ans+=a[i]*i;
}
for(int i=1;i<=n;i++){
ans-=(1+n)*n/2;
ans+=b[a[i]]*n;
mp[ans]=1;
//cout<<ans<<endl;
}
while(q--){
cin>>x>>y;
ans-=x*b[x];
ans+=y*b[x];
ans-=y*b[y];
ans+=x*b[y];
swap(b[x],b[y]);
//swap(a[b[x]],a[b[y]]);
//cout<<ans<<endl;
if(mp[ans]) cout<<"DA\n";
else cout<<"NE\n";
}
}