fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. Scanner scanner = new Scanner(System.in);
  13. int n = scanner.nextInt();
  14. int k = scanner.nextInt();
  15. int[] nums = new int[n];
  16.  
  17. for (int i = 0; i < n; i++) {
  18. nums[i] = scanner.nextInt();
  19. }
  20. int res = countSubWithSumLessThenEqualK(nums,k);
  21. System.out.println(res);
  22. }
  23.  
  24. public static int countSubWithSumLessThenEqualK(int []nums,int k){
  25. int cnt=0;
  26. int l=0,r=0;
  27. int psum=0,len=0,actual = 0,n=nums.length;
  28. Map<Integer,Integer> map = new HashMap<>();
  29. while(l<n && r<n){
  30. map.put(nums[r],map.getOrDefault(nums[r],0)+1);
  31. r++;
  32. len++;
  33. while(map.size() > k && l < n){
  34. map.put(nums[l],map.getOrDefault(nums[l],0)-1);
  35. if(map.get(nums[l]) <= 0) map.remove(nums[l]);
  36. l++;
  37. len--;
  38. }
  39. if(map.size() <= k) cnt+=len;
  40. }
  41. return cnt;
  42. }
  43. }
Success #stdin #stdout 0.11s 56484KB
stdin
3 2
1 2 2
stdout
6