fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int n,k; cin>>n>>k;
  5. int a[n];
  6. for(int i=0;i<n;i++) cin>>a[i];
  7.  
  8. unordered_map<int,int> mp1,mp2;
  9. mp1[0]=-1;
  10. mp2[0]=-1;
  11.  
  12. int x=0,lmin=INT_MAX,lmax=0;
  13.  
  14. for(int j=0;j<n;j++){
  15. x+=a[j];
  16.  
  17. if(mp1.find(x-k)!=mp1.end()){
  18. int i=mp1[x-k]+1;
  19. lmin=min(lmin,j-i+1);
  20. }
  21. mp1[x]=j;
  22.  
  23. if(mp2.find(x-k)!=mp2.end()){
  24. int i=mp2[x-k]+1;
  25. lmax=max(lmax,j-i+1);
  26. }
  27.  
  28. if(mp2.find(x)==mp2.end())
  29. mp2[x]=j;
  30. }
  31.  
  32. if(lmax==0)
  33. cout<<-1<<" "<<-1;
  34. else
  35. cout<<lmax<<" "<<lmin;
  36. }
Success #stdin #stdout 0s 5316KB
stdin
5 5
1 2 3 2 5
stdout
2 1