求大佬帮调65pts
查看原帖
求大佬帮调65pts
531811
luoguo0921楼主2022/10/23 20:20
#include<bits/stdc++.h>
using namespace std;
#define mod 998244353
#define ll long long
ll a[1000001];
ll ans,sum1,sum2;
ll cnt;
int t=1;
int main(){
	int n,k,p=0;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		if(a[i]>=-1)
		{sum1=(sum1+(a[i]+1)*(a[i]+1))%mod;
		cnt+=a[i]+1;
		p++;
		}
		else
		{sum2=(sum2+(a[i]+1)*(a[i]+1))%mod;
		
		}
	}
	for(int i=1;i<=k;i++){
   while(a[t]<-1&&a[t]+i>abs(a[t]+1))
   {
   	sum2=(sum2-(a[t]+1)*(a[t]+1)+mod)%mod;
   	cnt=(cnt+a[t]+i)%mod;
   	sum1=(sum1+((a[t]+i)*(a[t]+i)))%mod;
   	t++;
   	p++;
   }
   ans=(((ans+sum1)%mod)+sum2)%mod;
   sum1=(sum1+cnt*2+p)%mod;
   cnt=(cnt+1ll*p)%mod;
	}
	cout<<ans;
}
2022/10/23 20:20
加载中...