Don't like ads? PRO users don't see any ads ;-)
Guest

CF120-D

By: a guest on May 16th, 2012  |  syntax: C++  |  size: 0.42 KB  |  hits: 146  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4. long long n, k, i, a[400001], l, r, ans=0;
  5. map <long long, long long> m;
  6. int main()
  7. {
  8.         cin>>n>>k;
  9.         for(i=0; i<n; ++i)
  10.                 cin>>a[i];
  11.         for(l=0, r=-1; l<n&&r<n; ++l)
  12.         {
  13.                 if(l)
  14.                         --m[a[l-1]];
  15.                 if(l==0||m[a[l-1]]==k-1)
  16.                 {
  17.                         ++r;
  18.                         while(r<n)
  19.                         {
  20.                                 ++m[a[r]];
  21.                                 if(m[a[r]]==k)
  22.                                         break;
  23.                                 ++r;
  24.                         }
  25.                 }
  26.                 ans+=n-r;
  27.         }
  28.         cout<<ans;
  29.         return 0;
  30. }