fork download
  1. import java.util.*;
  2. public class Main {
  3. public static void main(String args[]) {
  4. Scanner scanner = new Scanner(System.in);
  5. int n = scanner.nextInt();
  6.  
  7. int[] a = new int[n];
  8.  
  9. for(int i=0;i<n;i++){
  10. a[i] = scanner.nextInt();
  11. }
  12. int k = scanner.nextInt();
  13. int max_len = Integer.MIN_VALUE;
  14. int min_len = Integer.MAX_VALUE;
  15.  
  16. int[] p = new int[n];
  17. p[0] = a[0];
  18.  
  19. for(int i =1;i<n;i++){
  20. p[i] = p[i-1] +a[i];
  21. }
  22.  
  23. HashMap<Integer,Integer> map = new HashMap<>(), map2 = new HashMap<>();
  24. map.put(0,-1);
  25. map2.put(0,-1);
  26. int length = 0;
  27. for(int j=0;j<n;j++){
  28. int rhs = p[j] - k;
  29. int i =0;
  30. if(map.containsKey(rhs) == true){
  31. i = map.get(rhs) +1;
  32. length = j-i+1;
  33. min_len = Math.min(min_len,length);
  34. }
  35. map.put(p[j],j);
  36.  
  37. if(map2.containsKey(rhs) == true){
  38. i = map2.get(rhs) + 1;
  39. length = j -i +1;
  40. max_len = Math.max(length,max_len);
  41. }
  42.  
  43. if(map2.containsKey(p[j] ) == false){
  44. map2.put(p[j], j);
  45. }
  46.  
  47.  
  48. }
  49.  
  50. if(max_len == Integer.MIN_VALUE){
  51. System.out.println("-1,-1");
  52. } else{
  53. System.out.println(max_len +" " + min_len);
  54. }
  55.  
  56. scanner.close();
  57. }
  58. }
Success #stdin #stdout 0.16s 60836KB
stdin
4 
2 2 1 4
5
stdout
3 2