fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int t,n1,k;
  6. cin>>t;
  7. while(t--){
  8. cin>>n1>>k;
  9. int A[n1];
  10. for(int i = 0 ; i<n1 ; i++){
  11. cin>>A[i];
  12. }
  13. int presum[n1+1];
  14. for(int i = 0 ; i<n1+1 ; i++){
  15. presum[i] = 0;
  16. }
  17. map<int,int>map1,map2;
  18. for(int i = 1 ; i<=n1 ; i++){
  19. presum[i] = presum[i-1]+A[i-1];
  20. }
  21. for(int i = 0 ; i<=n1 ; i++){
  22. if(map1.find(presum[i])==map1.end()){
  23. map1[presum[i]] = i;
  24. }
  25. map2[presum[i]] = i;
  26. }
  27. int maxi = 0,mini=INT_MAX;
  28. for(int i = 1 ; i<=n1 ; i++){
  29. if(map1.find(presum[i]-k)!=map1.end()){
  30. maxi = max(maxi,abs(i-map1[presum[i]-k]));
  31. }
  32. if(map2.find(presum[i]-k)!=map2.end()){
  33. mini = min(mini,abs(i-map2[presum[i]-k]));
  34. }
  35. }
  36. cout<<mini<<" "<<maxi<<endl;
  37. }
  38. return 0;
  39. }
Success #stdin #stdout 0.01s 5320KB
stdin
2
6 15
10 5 2 7 1 -10
6 -5
-5 8 -14 2 4 12
stdout
2 6
1 5