HDU 4648 Magic Pen 6

时间:2023-03-09 02:56:17
HDU 4648 Magic Pen 6

题目链接

6Y什么水平。。

 #include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
#define LL __int64
#define INF 10000000
int dp1[];
int dp2[];
LL p[];
LL sum[];
int main()
{
int n,m,i,ans;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(sum,,sizeof(sum));
for(i = ;i < m;i ++)
{
dp1[i] = -INF;
dp2[i] = INF;
}
ans = ;
for(i = ;i <= n;i ++)
{
scanf("%I64d",&p[i]);
sum[i] = sum[i-] + p[i];
sum[i]%= m;
if(sum[i] < )
sum[i] += m;
if(sum[i] == ) ans = max(ans,i);
dp1[sum[i]] = max(dp1[sum[i]],i);
dp2[sum[i]] = min(dp2[sum[i]],i);
}
for(i = ;i < m;i ++)
{
if(dp2[i] != INF)
ans = max(dp1[i]-dp2[i],ans);
}
printf("%d\n",ans);
}
return ;
}