提交时间:2024-11-14 16:47:20

运行 ID: 34798

#include<bits/stdc++.h> using namespace std; #define N 300005 #define mod 998244353 long long t,n; long long a[N],b[N]; long long as[N],bs[N]; long long rka[N],rkb[N]; long long ans; long long to[N]; bool vis[N]; long long pos[N]; int main(){ //freopen("1.in","r",stdin); ios::sync_with_stdio(0); cin>>n>>t; for(int i=1;i<=n;i++){cin>>a[i];as[i]=a[i];} for(int i=1;i<=n;i++){cin>>b[i];bs[i]=b[i];} sort(as+1,as+n+1);sort(bs+1,bs+n+1); for(int i=1;i<=n;i++) ans=(ans+(as[i]-bs[i])*(as[i]-bs[i])%mod)%mod; cout<<ans<<' '; if(t==0) return 0; for(int i=1;i<=n;i++){ rka[i]=lower_bound(as+1,as+n+1,a[i])-as; rkb[i]=lower_bound(bs+1,bs+n+1,b[i])-bs; pos[rkb[i]]=i; } for(int i=1;i<=n;i++){ to[i]=pos[rka[i]]; } ans=0; for(int i=1;i<=n;i++){ if(vis[i]) continue; int cnt=1; int now=to[i]; vis[i]=1; while(now!=i){ cnt++; vis[now]=1; now=to[now]; } if(cnt>1) ans+=cnt-1; } cout<<ans<<endl; return 0; }