fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. int solve(vector<int>& a){
  6. int n = a.size();
  7. int totalSum = accumulate(a.begin(),a.end(),0);
  8. if(totalSum%3!=0)return 0;
  9. int y = totalSum/3;
  10. unordered_map<int,int>prefixSum;
  11. int c=0,sum=0;
  12. for(int i=0;i<n-1;i++){
  13. sum += a[i];
  14. if(sum == 2*y && prefixSum.count(y)!=0){
  15. c += prefixSum[y];
  16. }
  17. prefixSum[sum]++;
  18. }
  19. return c;
  20. }
  21.  
  22. int main() {
  23. int n;
  24. cin>>n;
  25. vector<int>a(n);
  26. for(int i=0;i<n;i++){
  27. cin>>a[i];
  28. }
  29. cout<<solve(a);
  30. return 0;
  31. }
Success #stdin #stdout 0.01s 5292KB
stdin
7
1 2 0 0 1 2 3
stdout
3