fork download
  1.  
  2. #include <bits/stdc++.h>
  3. #define ll long long
  4. using namespace std;
  5.  
  6. ll solve() {
  7. int n;
  8. cin >> n;
  9. bool zero=false;
  10. bool zero_sum=false;
  11. vector<ll> v(n);
  12. vector<ll> sum(n,-1);
  13. for (int i = 0; i < n; i++) {
  14. cin >> v[i];
  15. if (v[i]==0)
  16. zero=true;
  17. }
  18.  
  19. sum[0]=v[0];
  20. if(sum[0]==0)
  21. zero_sum=true;
  22. for (int i = 0; i < n-1; i++) {
  23. sum[i+1]=sum[i]+v[i+1];
  24. if(sum[i+1]==0){
  25. zero_sum=true;
  26. }
  27. }
  28.  
  29.  
  30. unordered_map<ll,ll> counter_v,counter_sum;
  31. for (ll x : v) {
  32. counter_v[x]++;
  33. }
  34. for (ll x : sum) {
  35. counter_sum[x]++;
  36. }
  37.  
  38. ll common_count = 0;
  39. for (auto it : counter_v) {
  40. if (counter_sum.count(it.first)) {
  41. common_count += min(it.second, counter_sum[it.first]);
  42. }
  43. }
  44.  
  45.  
  46. if (!zero && !zero_sum &&(v.size()==1)){
  47. return 0;
  48. }
  49.  
  50. if ( counter_v[0] == 1 && !counter_sum.count(0)) {
  51. return common_count=1+common_count; // زيادة common_count بمقدار واحد
  52. }
  53.  
  54. else{
  55. return common_count;
  56. }
  57. }
  58.  
  59.  
  60. int main() {
  61. int t;
  62. cin >> t;
  63. while (t--) {
  64. cout<<solve()<<endl;
  65. }
  66. return 0;
  67. }
Success #stdin #stdout 0.01s 5280KB
stdin
7
1
0
1
1
4
1 1 2 0
5
0 1 2 1 4
7
1 1 0 3 5 2 12
7
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 294967296
10
0 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 589934592
stdout
1
0
3
3
5
1
2