fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5.  
  6. void solve(){
  7. int n,k,s=0,maxl=0,maxlNum=0;
  8. cin>>n>>k;
  9. vector<int>v(n);
  10. for(int i=0;i<n;i++)cin>>v[i];
  11. unordered_map<int,int>mp;
  12. for(int i=0;i<n;i++){
  13. s+=v[i];
  14. if(s==k){
  15. if(maxl==i+1)maxlNum++;
  16. else if(maxl<i+1){
  17. maxl=i+1;
  18. maxlNum=1;
  19. }
  20. }
  21. if(mp.count(s-k)){
  22. if(maxl==i-mp[s-k])maxlNum++;
  23. else if(maxl<i-mp[s-k]){
  24. maxlNum=1;
  25. maxl=i-mp[s-k];
  26. }
  27. }
  28. if(!mp.count(s))mp[s]=i;
  29. }
  30. cout<<"Length of longest subarray is "<<maxl<<" and number of longest subarray "<<maxlNum<<"\n";
  31. }
  32.  
  33. int main(){
  34. ios_base::sync_with_stdio(false);
  35. cin.tie(NULL);
  36. solve();
  37. return 0;
  38. }
Success #stdin #stdout 0.01s 5316KB
stdin
8 15
10 5 2 7 1 9 8 7
stdout
Length of longest subarray is 4 and number of longest subarray 1