Advertisement
Guest User

Untitled

a guest
Aug 20th, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <string>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <stack>
  9. #include <deque>
  10. #include <queue>
  11. #include <map>
  12. #include <set>
  13. #include <climits>
  14.  
  15. using namespace std;
  16.  
  17. #define N (int) 1e6 + 7
  18. #define INF (int) (2e9)
  19. #define EPS 1e-12
  20. #define MOD (int) (1e9 + 7)
  21. #define ord1(x) ((int) (x) - (int) '0')
  22. #define ordA(x) ((int) (x) - (int) 'a' + 1)
  23. #define Freopen freopen("input.txt", "r", stdin); \
  24.                 freopen("output.txt", "w", stdout);
  25. #define forn(it, left, right) for (int it = left; it <= (int) right; it++)
  26. #define mp make_pair
  27. #define pb push_back
  28. #define ll long long
  29.  
  30. char check (int, int);
  31.  
  32. int L, n, k;
  33. ll ans;
  34.  
  35. char s[N];
  36. int p[N][37];
  37. string f = "0123456789abcdefghijklmnopqrstuvwxyz";
  38.  
  39. int main()
  40. {
  41.     Freopen
  42.     cin >> n >> k;
  43.     k--;
  44.     gets(s);
  45.     gets(s);
  46.  
  47.     for (int i = 0; i < 36; i++)
  48.     {
  49.         if (s[0] == f[i])
  50.             p[0][i] = 1;
  51.         else
  52.             p[0][i] = 0;
  53.         for (int j = 1; j < n; j++)
  54.             if (s[j] == f[i])
  55.                 p[j][i] = p[j - 1][i] + 1;
  56.             else
  57.                 p[j][i] = p[j - 1][i];
  58.     }
  59.  
  60.    /* for (int i = 0; i < 36; i++)
  61.     {
  62.         for (int j = 0; j < n; j++)
  63.             cout << p[j][i] << ' ';
  64.         cout << endl;
  65.     }*/
  66.  
  67.     L = 0;
  68.     for (int i = 0; i < n; i++)
  69.         for (int j = L; j <= i; j++)
  70.             if (check(j, i))
  71.             {
  72.             //    cout<<j<<' '<<i<<endl;
  73.                 ans += i - j + 1;
  74.                 L = j;
  75.                 break;
  76.             }
  77.  
  78.     cout << ans;
  79.     return 0;
  80. }
  81.  
  82. char check (int l, int r)
  83. {
  84.     int cnt = 0;
  85.     for (int i = 0; i < 36; i++)
  86.         if (p[r][i] - p[l - 1][i] != 0)
  87.         {
  88.             cnt = 0;
  89.             if (l == 0)
  90.                 cnt += p[r][i] - 1;
  91.             else
  92.                 cnt += p[r][i] - p[l - 1][i] - 1;
  93.             if (cnt > k)
  94.                 return 0;
  95.         }
  96.     return 1;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement