口胡的C
  • 板块学术版
  • 楼主Hedgehog_210508
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/10/23 12:10
  • 上次更新2023/10/27 06:21:10
查看原帖
口胡的C
345657
Hedgehog_210508楼主2022/10/23 12:10

早上月赛的C,60分求调/kel

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define M 998244353
ll n,k,a[1000009],m,ans;
ll p(ll x){
	if((2*x+1)%3==0) return (x*(x+1)/2)%M*((2*x+1)/3)%M;
	else return(x*(x+1)/6)%M*(2*x+1)%M;
}
int main(){
	std::ios::sync_with_stdio(false);
	//freopen("ex.in","r",stdin);
	//freopen("ex.out","w",stdout);
	cin>>n>>k;
	for(ll i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]>=0&&a[i-1]<0) m=i-1;
	}
	for(ll i=m+1;i<=n;i++)
		ans+=p(a[i]+k)-p(a[i]),ans=(ans+M)%M;
	for(ll i=1;i<=m;i++){
		ans+=(min(k,-2*a[i]-2)*(-1-a[i])*(-1-a[i]))%M,ans=(ans+M)%M;
		if(k-(-2*a[i]-2)>0) ans+=p(a[i]+k)-p(-2-a[i]),ans=(ans+M)%M;
	}
	cout<<ans;
	return 0;
}
2022/10/23 12:10
加载中...