fork download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7. long long n,k;
  8. cin>>n>>k;
  9.  
  10. long long a[n];
  11. for(long long i=0;i<n;i++)
  12. {
  13. cin>>a[i];
  14. }
  15.  
  16. map<long long,long long> Map;
  17. long long i=0;
  18. long long j=0;
  19. long long distinct_count=0;
  20. long long count1=0;
  21. while(i < n)
  22. {
  23. if(Map.count(a[i]) <= 0)
  24. {
  25. distinct_count++;
  26. }
  27.  
  28. if(Map.count(a[i]) <= 0)
  29. {
  30. Map[a[i]]=1;
  31. }
  32. else
  33. {
  34. Map[a[i]]++;
  35. }
  36.  
  37. while(distinct_count > k)
  38. {
  39. Map[a[j]]--;
  40. if(Map[a[j]] == 0)
  41. {
  42. distinct_count--;
  43. Map.erase(a[j]);
  44. }
  45. j++;
  46. }
  47.  
  48. count1+=i-j+1;
  49. i++;
  50. }
  51.  
  52. cout<<count1<<endl;
  53.  
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 5284KB
stdin
5 2
1 2 3 1 1
stdout
10