// 2024 HOPE IN VALUABLE #include<bits/stdc++.h> using namespace std; const int N=505; const int M=30000001; int n,a[N],c[M<<1]; long long ans; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1]; for(int k=0;k<=n;k++) for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) c[a[j]-a[i]-a[k]+M]++; for(int k=n;~k;k--){ for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) c[a[j]-a[i]-a[k]+M]--; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) ans+=c[-a[j]+a[i]-a[k]+M]; } for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) if(a[i]==a[j]) ans--; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) c[(a[j]-a[i])*2+M]++; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++){ if(a[i]==a[j]) c[a[i]-a[j]+M]--; ans-=c[a[i]-a[j]+M]*3; if(a[i]==a[j]) c[a[i]-a[j]+M]++; } ans/=6; cout<<ans<<'\n'; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // 2024 HOPE IN VALUABLE #include<bits/stdc++.h> using namespace std; const int N=505; const int M=30000001; int n,a[N],c[M<<1]; long long ans; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1]; for(int k=0;k<=n;k++) for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) c[a[j]-a[i]-a[k]+M]++; for(int k=n;~k;k--){ for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) c[a[j]-a[i]-a[k]+M]--; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) ans+=c[-a[j]+a[i]-a[k]+M]; } for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) if(a[i]==a[j]) ans--; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++) c[(a[j]-a[i])*2+M]++; for(int i=0;i<=n;i++) for(int j=i+1;j<=n;j++){ if(a[i]==a[j]) c[a[i]-a[j]+M]--; ans-=c[a[i]-a[j]+M]*3; if(a[i]==a[j]) c[a[i]-a[j]+M]++; } ans/=6; cout<<ans<<'\n'; return 0; } |