#include #include #include #include #include #include #include #include #include #define ull unsigned long long using namespace std; const int MAXN = 100100; char s[MAXN]; int n, k; ull base = 997, p[MAXN]; ull hsh[MAXN], inv_hsh[MAXN]; ull get(int st, int fin) { if (st > fin) return 0; ull res = hsh[fin]; if (st > 0) { res -= hsh[st - 1]; } res *= p[n - st]; return res; } ull getInv(int st, int fin) { if (st > fin) return 0; ull res = inv_hsh[st]; res -= inv_hsh[fin + 1]; res *= p[fin + 1]; return res; } int bin(int st, int fin, int posl, int posr, int startl, int startr) { //cerr< k) { break; } } if (diff <= k) { ans += j - i + 1; } } } return ans; } int calc2(int l, int r) { int res = 0, diff = 0; while (l >= 0 && r < n) { diff += (s[l] != s[r]); if (diff > k) { return res; } res++; l--; r++; } return res; } long long brute2() { long long ans = 0, c =0; for (int i = 0; i < n; i++) { c += (s[i] != 'a'); int maxlen = calc2(i, i); ans += sum(2*maxlen - 1); if (i + 1 < n) { maxlen = calc2(i, i + 1); ans += sum(2*maxlen); } } cerr<>test; while (test--) { solve(); } cerr<<(double)clock() / CLOCKS_PER_SEC<