fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int count(vector<int> &v,int k){
  4. int max_c=0;
  5. int max_s=INT_MIN;
  6. unordered_map<int,int>m;
  7. int sum=0;
  8. for(int i=0;i<v.size();i++){
  9. sum+=v[i];
  10. if(m.find(sum-k)!=m.end()){
  11. if(max_s<i-m[sum-k]){
  12. max_s=i-m[sum-k];
  13. max_c=1;
  14. }else if(max_s==i-m[sum-k]){
  15. max_c++;
  16. }
  17. }
  18. if(sum==k){
  19. max_c=1;
  20. max_s=i+1;
  21. }
  22. if(m.find(sum)==m.end())m[sum]=i;
  23.  
  24. }
  25. return(max_c);
  26. }
  27. int main(){
  28. int n;cin>>n;
  29. int k;cin>>k;
  30. vector<int>v(n);
  31. for(int i=0;i<n;i++)cin>>v[i];
  32. cout<<count(v,k)<<endl;
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0s 5328KB
stdin
6
6
3 1 2 1 3 6
stdout
2