code
2023-01-28 11:40:06
发布于:山东
22阅读
0回复
0点赞
万 恶 数 据 范 围
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int maxn,n,m,p,ans;
int arr1[N],arr2[N],arr3[N],arr4[N];
bool f;
signed main()
{
cin>>n>>p;
for(int i=1;i<=n;i++)
{
cin>>arr1[i];
}
arr3[1]=arr1[1];
maxn=arr1[1];
arr4[1]=arr1[1];
for(int i=2;i<=n;i++)
{
arr3[i]=max(arr3[i-1]+arr1[i],arr1[i]);
arr4[i]=max(maxn,arr3[i]);
maxn=arr4[i];
}
arr2[1]=arr4[1];
arr2[2]=arr4[1]+arr2[1];
if(arr2[2]>=arr2[1])
{
f=true;
}
maxn=arr2[2];
for(int i=3;i<=n;i++)
{
if(arr4[i-1]>0)
{
arr2[i]=arr2[i-1]+arr4[i-1];
if(arr2[i]>arr2[1])
{
f=true;
}
if(arr2[i]>N)
{
arr2[i]%=p;
}
}
else
{
arr2[i]=arr2[2];
}
}
if(!f)
{
ans=arr2[1];
}
else
{
ans=arr2[n];
}
ans%=p;
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个