Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <cstdio>
- #include <cstring>
- #include <string>
- #include <algorithm>
- #include <vector>
- #include <stack>
- #include <deque>
- #include <queue>
- #include <map>
- #include <set>
- #include <climits>
- using namespace std;
- #define N (int) 1e6 + 7
- #define INF (int) (2e9)
- #define EPS 1e-12
- #define MOD (int) (1e9 + 7)
- #define ord1(x) ((int) (x) - (int) '0')
- #define ordA(x) ((int) (x) - (int) 'a' + 1)
- #define Freopen freopen("input.txt", "r", stdin); \
- freopen("output.txt", "w", stdout);
- #define forn(it, left, right) for (int it = left; it <= (int) right; it++)
- #define mp make_pair
- #define pb push_back
- #define ll long long
- char check (int, int);
- int L, n, k;
- ll ans;
- char s[N];
- int p[N][37];
- string f = "0123456789abcdefghijklmnopqrstuvwxyz";
- int main()
- {
- Freopen
- cin >> n >> k;
- k--;
- gets(s);
- gets(s);
- for (int i = 0; i < 36; i++)
- {
- if (s[0] == f[i])
- p[0][i] = 1;
- else
- p[0][i] = 0;
- for (int j = 1; j < n; j++)
- if (s[j] == f[i])
- p[j][i] = p[j - 1][i] + 1;
- else
- p[j][i] = p[j - 1][i];
- }
- /* for (int i = 0; i < 36; i++)
- {
- for (int j = 0; j < n; j++)
- cout << p[j][i] << ' ';
- cout << endl;
- }*/
- L = 0;
- for (int i = 0; i < n; i++)
- for (int j = L; j <= i; j++)
- if (check(j, i))
- {
- // cout<<j<<' '<<i<<endl;
- ans += i - j + 1;
- L = j;
- break;
- }
- cout << ans;
- return 0;
- }
- char check (int l, int r)
- {
- int cnt = 0;
- for (int i = 0; i < 36; i++)
- if (p[r][i] - p[l - 1][i] != 0)
- {
- cnt = 0;
- if (l == 0)
- cnt += p[r][i] - 1;
- else
- cnt += p[r][i] - p[l - 1][i] - 1;
- if (cnt > k)
- return 0;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement