Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
34798 | swzzzz | 【S】T3 | C++ | 通过 | 100 | 190 MS | 19320 KB | 1134 | 2024-11-14 16:47:20 |
#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; }