Run ID Author Problem Lang Verdict Score Time Memory Code Length Submit Time
43436 范墨涵 【J】T3 C++ Accepted 100 346 MS 29604 KB 939 2026-10-29 16:41:08

Tests(10/10):


#include<bits/stdc++.h> using namespace std; #define int long long const int N = 1e6+10; int n,p; int a[N]; int sum[N]; int pre[N]; // pre[i]表示第i个往前最靠后的与它前缀和相等的下标 int f[N]; // f[i]表示1~i合并后的结果,f[i]=max(f[i-1],f[pre[i]]+1); signed main(){ //freopen("a.in","r",stdin); //freopen("a.out","w",stdout); cin >> n >> p; for (int i=1;i<=n;i++){ cin>>a[i]; sum[i]=a[i]; sum[i]=(sum[i]+sum[i-1])%p; } memset (pre,-1,sizeof(pre)); for (int i=n;i>=2;i--){ for (int j=i-1;j>=0;j--){ if (sum[i]==sum[j]){ pre[i]=j; break; } } } if (sum[1]==0) f[1]=1; else f[1]=0; for (int i=2;i<=n;i++){ f[i]=f[i-1]; if (pre[i]==-1) continue; f[i]=max(f[i],f[pre[i]]+1); } cout << f[n]; return 0; }


Judgement Protocol: