fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll =long long;
  4. int main() {
  5. // your code goes here
  6. ll n;
  7. cin>>n;
  8. vector<ll>a(n);
  9. for(ll i=0;i<n;i++) cin>>a[i];
  10. unordered_map<int,int> prefFreq;
  11. unordered_map<int,int> suffFreq;
  12. int sum=0;
  13. for(int i=0;i<n;i++) sum+=a[i];
  14. int cnt=0;
  15. if(sum%4!=0){
  16. cout<<0<<endl;
  17. return 0;
  18. }
  19. else{
  20. ll pref=a[0];
  21. prefFreq[a[0]]=1;
  22.  
  23. ll suff=0;
  24. for(ll i=n-1;i>=3;i--){
  25. suff+=a[i];
  26. suffFreq[suff]++;
  27. }
  28. suff+=a[2];
  29. pref+=a[1];
  30. ll y=sum/4;
  31. for(int i=1;i<=n-3;i++){
  32. if(pref==2*y && suff==2*y){
  33. //1st and 4 quater
  34. cnt+=(prefFreq[y]*suffFreq[y]);
  35. // cout<<cnt<<" "<<i<<endl;
  36. }
  37. prefFreq[pref]++;
  38. pref+=a[i+1];
  39. suff-=a[i+1];
  40. suffFreq[suff]--;
  41.  
  42. }
  43. }
  44. cout<<endl;
  45. cout<<cnt<<endl;
  46. return 0;
  47. }
Success #stdin #stdout 0s 5320KB
stdin
7
1 2 -1 2 2 0 2
stdout
2