QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#864729 | #5037. 回文 | Felix72 | 10 | 182ms | 47776kb | C++14 | 11.3kb | 2025-01-20 22:22:06 | 2025-01-20 22:22:08 |
Judging History
answer
/* Good Game, Well Play. */
#include <bits/stdc++.h>
#define lowbit(x) ((x) & (-(x)))
using namespace std;
const int N = 200010, P = 131;
const long long mod = 10000000000000061;
int n, m, B; string s; long long pw[N];
bool Entag = false; int Enl, Enr;
struct Blocks
{
int bid[N]; long long pre[N], suf[N];
struct Part
{
int l, r; long long val[2];
vector < long long > hsh[2];
inline void rebuild()
{
for(int op = 0; op <= 1; ++op)
val[op] = 0, hsh[op].resize(r - l + 3);
for(int j = l; j <= r; ++j)
{
val[0] = ((__int128)val[0] * P + s[j]) % mod;
hsh[0][j - l + 1] = val[0];
}
for(int j = r; j >= l; --j)
{
val[1] = ((__int128)val[1] * P + s[j]) % mod;
hsh[1][j - l + 1] = val[1];
}
}
}; Part part[N];
inline void init_sum()
{
for(int i = 1; i <= bid[n]; ++i)
pre[i] = ((__int128)pre[i - 1] * pw[part[i].r - part[i].l + 1] + part[i].val[0]) % mod;
for(int i = bid[n]; i >= 1; --i)
suf[i] = ((__int128)suf[i + 1] * pw[part[i].r - part[i].l + 1] + part[i].val[1]) % mod;
}
inline long long in_query(int op, int id, int l, int r)
{
if(op == 0) return (part[id].hsh[0][r] - (__int128)part[id].hsh[0][l - 1] * pw[r - l + 1] % mod + mod) % mod;
else return (part[id].hsh[1][l] - (__int128)part[id].hsh[1][r + 1] * pw[r - l + 1] % mod + mod) % mod;
}
inline void _setup()
{
B = sqrt(n);
for(int i = 1; i <= n; ++i) bid[i] = (i - 1) / B + 1;
for(int i = 1; i <= bid[n]; ++i)
{
part[i].l = B * (i - 1) + 1;
part[i].r = min(B * i, n);
part[i].rebuild();
}
init_sum();
}
inline void _modify(int p)
{
part[bid[p]].rebuild();
init_sum();
}
inline long long _query(int op, int l, int r)
{
if(Entag)
{
op ^= 1; swap(l, r);
l = Enr - (l - Enl);
r = Enr - (r - Enl);
}
if(l > r) return 0;
if(bid[l] == bid[r]) return in_query(op, bid[l], l - part[bid[l]].l + 1, r - part[bid[l]].l + 1);
else
{
long long res = 0;
if(op == 0)
{
res = in_query(0, bid[l], l - part[bid[l]].l + 1, part[bid[l]].r - part[bid[l]].l + 1);
if(bid[l] + 1 < bid[r])
{
res = (__int128)res * pw[part[bid[r] - 1].r - part[bid[l]].r] % mod;
res = (res + (pre[bid[r] - 1] - (__int128)pre[bid[l]] * pw[part[bid[r] - 1].r - part[bid[l]].r] % mod + mod)) % mod;
}
res = (__int128)res * pw[r - part[bid[r]].l + 1] % mod;
res = (res + in_query(0, bid[r], 1, r - part[bid[r]].l + 1)) % mod;
}
else
{
res = in_query(1, bid[r], 1, r - part[bid[r]].l + 1);
if(bid[l] + 1 < bid[r])
{
res = (__int128)res * pw[part[bid[r] - 1].r - part[bid[l]].r] % mod;
res = (res + (suf[bid[l] + 1] - (__int128)suf[bid[r]] * pw[part[bid[r] - 1].r - part[bid[l]].r] % mod + mod)) % mod;
}
res = (__int128)res * pw[part[bid[l]].r - l + 1] % mod;
res = (res + in_query(1, bid[l], l - part[bid[l]].l + 1, part[bid[l]].r - part[bid[l]].l + 1)) % mod;
}
return res;
}
}
}; Blocks blocks;
struct Seq
{
int x, d, l;
bool operator < (const Seq &w) const {return x < w.x;}
bool operator > (const Seq &w) const {return x > w.x;}
};
inline vector < Seq > compress(vector < Seq > vec)
{
sort(vec.begin(), vec.end());
// cerr << "+++++++++++++++++++++++++++++++++++++++\n";
// for(Seq sq : vec) cerr << "org " << sq.x << " " << sq.d << " " << sq.l << '\n';
vector < Seq > res;
for(Seq sq : vec)
{
if(!res.empty())
{
if(res.back().l == 1 && sq.l == 1)
res.back().d = sq.x - res.back().x, ++res.back().l;
else if(res.back().l == 1 && sq.x - res.back().x == sq.d)
res.back().d = sq.d, res.back().l += sq.l;
else if(sq.l == 1 && sq.x - (res.back().x + res.back().d * (res.back().l - 1)) == res.back().d)
++res.back().l;
else if(res.back().l > 1 && sq.l > 1 && res.back().d == sq.d && sq.x - (res.back().x + res.back().d * (res.back().l - 1)) == res.back().d)
res.back().l += sq.l;
else res.push_back(sq);
}
else res.push_back(sq);
}
// for(Seq sq : res) cerr << "final " << sq.x << " " << sq.d << " " << sq.l << '\n';
return res;
}
struct Data
{
int l, r;
vector < Seq > pr, su;
inline void unit(int p)
{
l = r = p;
pr.clear(); su.clear();
pr.push_back({1, 1, 1});
su.push_back({1, 1, 1});
}
inline void reset(int ln, int rn)
{l = ln, r = rn, pr.clear(), su.clear();}
inline void debug()
{
cerr << "pr : ";
for(Seq sq : pr) cerr << "(" << sq.x << "," << sq.d << "," << sq.l << ") ";
cerr << '\n';
cerr << "su : ";
for(Seq sq : su) cerr << "(" << sq.x << "," << sq.d << "," << sq.l << ") ";
cerr << '\n';
}
};
const bool Enop[5] = {false, true, true, true, true};
inline void work(Data u, Data v, int l, int mid, int r, Data &res)
{
// cerr << "work " << l << " " << mid << " " << r << '\n';
// for(int i = l; i <= r; ++i) cerr << s[i]; cerr << '\n';
// u.debug(); cerr << '\n'; v.debug();
// Case I
if(Enop[1])
{
res.su = v.su;
}
// Case II
if(Enop[2])
{
for(Seq sq : v.pr)
{
// cerr << "! " << sq.x << " " << sq.d << " " << sq.l << '\n';
if(sq.l == 1)
{
if(sq.x != r - mid && l <= mid - (r - mid - sq.x) + 1 && blocks._query(0, mid + sq.x + 1, r) == blocks._query(1, mid - (r - mid - sq.x) + 1, mid))
res.su.push_back({sq.x + 2 * (r - mid - sq.x), 1, 1});
}
else
{
int ex = r - mid - (sq.x + sq.d * (sq.l - 1));
if(!ex || blocks._query(0, mid + sq.x + sq.d * (sq.l - 1) + 1, r) == blocks._query(0, mid + sq.x + 1, mid + sq.x + (r - mid - sq.x - sq.d * (sq.l - 1))))
{
int head = (ex ? 0 : 1), tail = sq.l - 1, lim = -1;
while(head <= tail)
{
int md = (head + tail) >> 1;
if(l <= mid - (md * sq.d + ex) + 1 && blocks._query(0, r - (md * sq.d + ex) + 1, r) == blocks._query(1, mid - (md * sq.d + ex) + 1, mid))
lim = md, head = md + 1;
else tail = md - 1;
}
if(lim != -1)
{
// cerr << "lim " << lim << '\n';
if(ex) res.su.push_back({(r - mid) + ex, sq.d, lim + 1});
else res.su.push_back({(r - mid) + sq.d, sq.d, lim});
}
}
else
{
int head = 1, tail = sq.l - 1, lim = 0;
while(head <= tail)
{
int md = (head + tail) >> 1;
if(l <= mid - md * sq.d + 1 && blocks._query(1, mid - md * sq.d + 1, mid) == blocks._query(0, mid + sq.x + 1, mid + sq.x + md * sq.d))
lim = md, head = md + 1;
else tail = md - 1;
}
if(l <= mid - lim * sq.d - ex + 1 && blocks._query(1, mid - lim * sq.d - ex + 1, mid) == blocks._query(0, r - (lim * sq.d + ex) + 1, r))
res.su.push_back({r - mid + lim * sq.d + ex, 1, 1});
}
}
}
}
// Case III
if(Enop[3])
{
if(r - mid <= mid - l + 1)
{
if(blocks._query(0, mid + 1, r) == blocks._query(1, mid - (r - mid) + 1, mid))
res.su.push_back({2 * (r - mid), 1, 1});
}
}
// Case IV
if(Enop[4])
{
for(Seq sq : u.su)
{
if(sq.l == 1)
{
if(l <= mid - sq.x - (r - mid) + 1 && blocks._query(0, mid + 1, r) == blocks._query(1, mid - sq.x - (r - mid) + 1, mid - sq.x))
res.su.push_back({sq.x + 2 * (r - mid), 1, 1});
}
else
{
if(mid - sq.x - (r - mid) + 1 < l) continue;
int head = 1, tail = (sq.l - 1) * sq.d, lim = 0;
while(head <= tail)
{
int md = (head + tail) >> 1;
if(mid + md <= r && blocks._query(0, mid + 1, mid + md) == blocks._query(1, mid - sq.x - md + 1, mid - sq.x))
lim = md, head = md + 1;
else tail = md - 1;
}
if(lim == r - mid)
{
head = 0, tail = sq.l - 1, lim = -1;
while(head <= tail)
{
int md = (head + tail) >> 1;
if(l <= mid - sq.x - md * sq.d - (r - mid) + 1 && blocks._query(0, mid - sq.x - md * sq.d - (r - mid) + 1, mid - sq.x - md * sq.d) == blocks._query(1, mid + 1, r))
lim = md, head = md + 1;
else tail = md - 1;
}
if(lim != -1) res.su.push_back({sq.x + 2 * (r - mid), sq.d, lim + 1});
}
else
{
head = 0, tail = sq.l - 1, lim = 0;
while(head <= tail)
{
int md = (head + tail) >> 1;
if(mid + md * sq.d <= r && blocks._query(0, mid - sq.x - sq.d * md + 1, mid - sq.x) == blocks._query(1, mid + 1, mid + sq.d * md))
lim = md, head = md + 1;
else tail = md - 1;
}
lim *= sq.d;
if(l <= mid - sq.x - sq.d * (sq.l - 1) - (r - mid - lim) + 1)
{
if(blocks._query(0, mid - sq.x - sq.d * (sq.l - 1) - (r - mid - lim) + 1, r) == blocks._query(1, mid - sq.x - sq.d * (sq.l - 1) - (r - mid - lim) + 1, r))
res.su.push_back({sq.x + (sq.d * (sq.l - 1) - lim) + (r - mid) * 2, 1, 1});
}
}
}
}
}
}
Data operator + (Data u, Data v)
{
int l = u.l, mid = u.r, r = v.r;
Data res; res.reset(l, r);
// -------------- Suffix --------------
Entag = false; work(u, v, l, mid, r, res);
// -------------- Prefix --------------
Entag = true; Enl = l, Enr = r;
for(int i = l; i <= r; ++i) if(i <= r - (i - l)) swap(s[i], s[r - (i - l)]);
swap(u, v);
swap(res.pr, res.su), swap(u.pr, u.su), swap(v.pr, v.su);
work(u, v, l, r - (mid - l) - 1, r, res);
for(int i = l; i <= r; ++i) if(i <= r - (i - l)) swap(s[i], s[r - (i - l)]);
swap(res.pr, res.su), swap(u.pr, u.su), swap(v.pr, v.su);
swap(u, v);
res.pr = compress(res.pr); res.su = compress(res.su);
return res;
}
struct SegTree
{
int rt, idx;
struct SGT
{
int ls, rs; Data data;
#define ls(x) tree[x].ls
#define rs(x) tree[x].rs
#define data(x) tree[x].data
} tree[N * 2];
inline void pushup(int now)
{data(now) = data(ls(now)) + data(rs(now));}
inline void build(int &now, int l, int r)
{
now = ++idx;
if(l == r) {data(now).unit(l); return ;}
int mid = (l + r) >> 1;
build(ls(now), l, mid), build(rs(now), mid + 1, r);
pushup(now);
// cerr << "build " << l << " " << r << " ++++++++++++++++++++++++++++++++++++++\n";
// data(now).debug();
}
inline void modify(int now, int l, int r, int pos)
{
if(l == r) return ;
int mid = (l + r) >> 1;
if(pos <= mid) modify(ls(now), l, mid, pos);
else modify(rs(now), mid + 1, r, pos);
pushup(now);
}
inline Data query(int now, int l, int r, int L, int R)
{
if(L <= l && r <= R) return data(now);
int mid = (l + r) >> 1;
Data res;
if(R <= mid) res = query(ls(now), l, mid, L, R);
else if(mid < L) res = query(rs(now), mid + 1, r, L, R);
else res = (query(ls(now), l, mid, L, R) + query(rs(now), mid + 1, r, L, R));
// cerr << "query " << l << " " << r << " ++++++++++++++++++++\n";
// res.debug();
return res;
}
inline void _init() {build(rt, 1, n);}
inline void _modify(int p) {modify(rt, 1, n, p);}
inline Data _query(int l, int r) {return query(rt, 1, n, l, r);}
}; SegTree sgt;
int main()
{
// freopen("text.in", "r", stdin);
// freopen("prog.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> s; n = s.length(); s = ' ' + s;
pw[0] = 1; for(int i = 1; i <= n; ++i) pw[i] = (__int128)pw[i - 1] * P % mod;
blocks._setup(); sgt._init();
cin >> m;
for(int i = 1, lst; i <= m; ++i)
{
int opt, l, r, p; char c; cin >> opt;
if(opt == 1)
{
cin >> p >> c;
p ^= lst;
s[p] = c; blocks._modify(p), sgt._modify(p);
}
else
{
cin >> l >> r;
l ^= lst, r ^= lst;
lst = 0; Data dt = sgt._query(l, r);
for(Seq sq : dt.su) lst += sq.l;
cout << lst << '\n';
}
}
return 0;
}
/*
abbaaabaac
1
2 1 7
*/
詳細信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 107ms
memory: 45376kb
input:
aabbbabbbaaaaaaabbabbbaaaabaaaabbaabbaabbaaababbbabbbbabbbbaaaabbbabbbbbaaabbbabbaaaaabbbbbaaababbabbaaaaabaabbbbaaababaaabbaabbabbbabbbbaaaaabbbbbbbabbbaabbbabbabbbababbabbbbaaaaabbaababbbbaabbaaaaaabaaabbbaaababbbbaabaaaaababababbbbbbaaaabbbbaaababaaabbaabbbbbaaaabbaaaabaaaaaababbababaaaabaaababaa...
output:
2 3 5 3 3 3 2 3 4 2 4 2 4 2 3 3 3 2 2 2 2 2 2 3 4 2 2 3 2 2 4 3 3 2 3 3 4 3 3 4 4 2 3 4 2 2 4 2 4 3 2 2 2 3 3 3 4 4 3 3 2 3 3 2 3 3 4 2 2 4 2 3 2 3 3 2 3 2 2 3 2 2 3 6 2 2 3 7 4 3 2 2 2 2 3 4 4 4 4 2 2 3 2 4 2 2 2 3 3 2 2 2 2 3 3 4 3 2 3 3 2 2 4 5 4 2 2 5 3 3 3 3 2 4 2 3 2 3 3 3 2 4 4 5 2 2 3 5 3 3 ...
result:
ok 2509 tokens
Test #2:
score: 10
Accepted
time: 135ms
memory: 45476kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
188 1078 673 914 360 4255 2205 3628 77 3608 230 494 128 848 801 1335 4079 3059 636 2882 3524 45 1174 506 3570 4172 1289 595 3829 1532 179 1274 2574 1098 2817 226 2580 887 989 1829 3656 181 2056 3315 786 117 2519 2742 3787 1080 3138 686 1605 239 1533 2658 2096 753 3400 219 1815 117 1645 52 1671 121 2...
result:
ok 2519 tokens
Test #3:
score: 10
Accepted
time: 117ms
memory: 46344kb
input:
bbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbbbbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbbbbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbbbbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbba...
output:
12 8 12 24 30 18 11 8 32 18 10 32 26 11 11 15 18 6 18 19 13 21 10 13 20 16 10 10 10 9 16 11 32 14 24 20 29 15 10 17 10 8 8 22 31 9 9 18 25 10 14 16 22 24 15 15 11 13 33 7 13 21 7 19 12 12 17 7 23 15 2 10 16 15 9 14 6 18 10 8 18 20 21 5 11 18 3 17 13 17 8 11 17 7 6 7 11 10 9 20 9 28 19 10 14 11 24 8 ...
result:
ok 5000 tokens
Test #4:
score: 10
Accepted
time: 99ms
memory: 46444kb
input:
mkmamkmlmkmamkmnmkmamkmlmkmamkmamkmamkmlmkmamkmnmkmamkmlmkmamkmumkmamkmlmkmamkmnmkmamkmlmkmamkmamkmamkmlmkmamkmnmkmamkmlmkmamkmkmkmamkmlmkmamkmnmkmamkmlmkmamkmamkmamkmlmkmamkmnmkmamkmlmkmamkmumkmamkmlmkmamkmnmkmamkmlmkmamkmamkmamkmlmkmamkmnmkmamkmlmkmamkmpmkmamkmlmkmamkmnmkmamkmlmkmamkmamkmamkmlmkma...
output:
5 8 5 6 5 6 7 7 5 8 5 5 6 5 9 6 5 6 7 8 5 5 8 6 4 5 8 5 8 4 6 4 5 6 5 1 5 7 4 5 7 3 5 8 9 6 4 5 5 4 7 7 5 7 8 7 6 5 7 1 5 5 6 6 6 6 7 6 6 4 5 5 6 3 8 7 5 6 6 7 4 4 7 7 6 6 7 8 6 7 7 4 7 6 8 3 5 7 3 6 7 6 4 7 6 4 5 6 6 4 6 7 4 5 5 5 4 4 5 6 3 4 4 5 4 7 5 4 9 6 5 5 3 4 5 8 4 5 5 6 4 6 6 6 4 9 7 4 6 6 ...
result:
ok 5000 tokens
Test #5:
score: 10
Accepted
time: 117ms
memory: 46152kb
input:
babababababababababababababababababababababababababababababababbbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbbabababababababababababababababababababababababababababababababbbabababababababababababababababababababababa...
output:
58 13 6 23 52 35 39 46 17 43 37 33 31 8 51 12 9 52 57 14 28 17 31 21 59 50 55 50 18 10 54 7 44 11 10 3 12 19 9 8 5 7 22 4 38 15 10 14 26 11 21 18 33 12 3 8 23 34 41 18 7 18 26 7 12 29 34 6 4 15 16 20 15 8 50 23 7 51 18 4 11 7 20 14 33 19 12 9 10 6 8 21 28 22 21 18 12 18 4 15 17 13 8 16 7 14 10 4 5 3...
result:
ok 2443 tokens
Test #6:
score: 10
Accepted
time: 110ms
memory: 45476kb
input:
aaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaabaabaaaaaaaa...
output:
43 25 18 13 12 27 16 18 22 24 13 20 34 18 5 27 26 27 8 10 6 9 9 14 22 15 34 25 19 24 19 18 13 7 21 14 2 33 7 46 16 18 19 12 25 8 7 14 22 2 2 12 19 3 20 15 18 10 8 8 8 12 5 12 18 22 7 15 16 36 21 11 11 14 8 13 12 2 5 40 14 15 2 5 11 4 12 16 11 9 9 6 6 18 16 11 15 18 13 15 8 24 19 9 5 15 18 8 13 5 31 ...
result:
ok 2498 tokens
Test #7:
score: 10
Accepted
time: 119ms
memory: 47776kb
input:
baabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabcaaaaaaaacbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabba...
output:
67 7 4 13 81 3 8 92 28 86 94 92 71 23 73 26 24 13 71 88 98 42 70 45 82 63 5 80 57 49 48 77 88 5 98 96 65 52 11 24 52 51 76 90 9 10 58 43 36 48 82 73 10 14 90 54 74 12 32 36 71 46 8 46 20 38 22 68 54 73 66 32 95 63 52 7 40 97 27 13 42 59 41 14 9 44 53 52 92 30 36 27 86 90 59 95 12 36 42 16 24 58 23 5...
result:
ok 5000 tokens
Test #8:
score: 10
Accepted
time: 162ms
memory: 45476kb
input:
caaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaaccabccbaccaaccaaccaaccaaccaaccaac...
output:
10 10 11 11 11 10 10 10 8 10 11 11 9 9 10 10 10 11 10 11 9 10 10 11 11 11 10 11 11 11 11 11 11 11 11 10 10 10 10 11 11 11 10 11 10 10 10 11 10 10 10 10 10 11 11 11 11 10 11 11 11 10 11 11 11 10 10 7 11 11 10 11 10 10 11 10 11 10 10 7 11 11 10 10 11 11 10 10 2 11 11 11 5 11 11 11 11 11 10 10 10 11 11...
result:
ok 1667 tokens
Test #9:
score: 10
Accepted
time: 182ms
memory: 45304kb
input:
cabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbbaccbaccabccabbbbbb...
output:
38 38 38 37 38 38 38 9 37 38 8 38 37 38 38 38 38 38 38 37 27 38 38 38 38 38 38 30 38 38 38 38 38 38 38 38 24 38 38 38 38 38 38 38 38 38 37 38 5 38 32 25 38 38 38 38 38 38 38 38 38 38 38 37 38 37 38 31 38 38 38 38 38 38 12 38 38 37 38 38 38 38 37 38 38 38 23 38 38 38 38 24 38 38 38 38 38 35 38 38 38 ...
result:
ok 1667 tokens
Test #10:
score: 10
Accepted
time: 134ms
memory: 46496kb
input:
baaabbbaaabbbbaaababbababbabbbbaaaababaababbbbababababbbaabbbaababaaaababbbaaabaaababbababaaabbabbbaaabbabbbabaabaaaababbbbabbbbbaabbabbaaaabaaabababbbaababbbaaaaaababbabaaabaaaabbbabbbaababbbbbbbbaabbbaabbabaabababbaabaabaabbbbbaaababbbbabbbababababaabbababaabbabbbbbbaaaaaaabaabbabbabaabbbbbaaaaaba...
output:
3 3 2 3
result:
ok 4 tokens
Test #11:
score: 10
Accepted
time: 78ms
memory: 45528kb
input:
abbaaabaabbbaabbabbbbbbaabbbbabbaabababaabbabbabaaabbabbbaaaabbabbaabbbabbbabbababaaaabbabbaabababbbaaababaababbabbaaabbbaabaaaaaabbbabbababaabbbbbabbbaaaaaaabbaaaabaaababbababaabaaabbbaaabbaabbabbabbbababbabbbbbbbbaabbabbbabbbbbbbababaabbbaabaabaabaaabababbaabbbbaaabbbbabbaabbbabbbababaababbabbabba...
output:
3 4 2 2 4 2 2 4 3 5 2 2 3 4 3 2 3 4 6 2 2 2 2 2 5 3 4 3 3 2 2 2 2 5 2 3 2 3 2 3 2 3 2 4 2 2 3 2 2 3 5 2 2 7 3 2 3 2 3 3 2 2 3 4 3 2 4 2 2 2 3 3 3 3 3 2 3 3 3 5 2 4 2 3 3 3 3 3 3 2 4 4 3 4 2 2 3 3 6 2 5 4 2 2 4 2 5 3 3 2 5 4 3 3 3 3 4 3 2 3 2 4 2 3 6 3 3 2 3 3 2 3 3 5 2 3 4 3 5 3 3 3 3 4 2 3 3 2 3 2 ...
result:
ok 4997 tokens
Test #12:
score: 10
Accepted
time: 90ms
memory: 47724kb
input:
lxxhwqorbxrdzedxlvymggyicczuafgyovixrzmptqfmjyjfpamcsehmfazbvfwdgeftgbtyurnnykwjhzfqqsyiyzkpwlmspjsxdkjtpgzbrvwwcjqejmuillhgtbhwtwmvhacfphrcgwoaihjzkuccmwuidivmpjcezbjywhbqtdgrhlrskcwmecflzpjbuutlocivcfvbcdvlnfchtvvcpoubnjwfwvzvpyvhkvxdmleyvucrondntpaonjybzarkgjnkuuvipkqgvwzzzopwyfnmodnmdziueescfttr...
output:
1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 2493 tokens
Test #13:
score: 10
Accepted
time: 138ms
memory: 45612kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
849 1135 1444 1346 1445 536 3077 2631 1447 672 2214 2149 2090 4054 846 559 22 92 4224 161 2280 572 2347 2599 778 4093 750 3647 2142 642 474 1395 776 645 46 4141 2272 771 1564 207 4284 2896 3097 2829 306 1383 394 1776 1284 3933 102 510 1101 3639 1336 1292 2803 1159 601 1464 2585 673 281 1340 272 3310...
result:
ok 2478 tokens
Test #14:
score: 10
Accepted
time: 9ms
memory: 45472kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 ...
result:
ok 4999 tokens
Subtask #2:
score: 0
Time Limit Exceeded
Test #15:
score: 0
Time Limit Exceeded
input:
aabababbabbbbbbabbababaaaabababbabbbbbbabbababaaaabababbabbbbbbabbababaaaabababbabbbbbbabbababaabbbaaabbaabbbbaabbaaabbbaabababbabbbbbbabbababaaaabababbabbbbbbabbababaaaabababbabbbbbbabbababaaaabababbabbbbbbabbababaabbaaabaaaaaabaaabbaabababbabbbbbbabbababaaaabababbabbbbbbabbababaaaabababbabbbbbbabb...
output:
41 43 154 118 55 165 48 163 119 207 147 145 33 67 114 124 154 9 104 307 102 73 39 364 79 177 53 39 88 264 77 114 79 195 150 153 157 46 129 136 147 25 309 11 12 258 259 133 355 50 116 336 13 127 18 34 122 161 38 99 290 92 355 166 59 152 41 182 103 282 166 23 86 173 32 122 60 127 287 20 83 214 119 144...
result:
Subtask #3:
score: 0
Time Limit Exceeded
Test #21:
score: 0
Time Limit Exceeded
input:
abbaaaabbabaaaaaabaabbaabbababbaaabbabbbabaabaabaaaaabaabbbbabbabbabbbababbbababababbbbabaabbaaababbbbbababbbbaabbbaaabaababababaabbbbbbaababaabbaaabaabbaaababbabbabbbbaaaaabaaabbbabbbbbbabbbabbabaabbbbbbbaaaabbaaaababbbaaaaaaababaabbbbaaabaaabbaabbbbbbababbaabbaaabbabbbbbabaababbaabaaaabbbbabababba...
output:
result:
Subtask #4:
score: 0
Time Limit Exceeded
Test #27:
score: 0
Time Limit Exceeded
input:
babbaaabbbbbbbabbbababaabbbbbababababbaabaabbbbbbabbbbbbbbbbababbbbabbaabbbaabaabbabbbaabbabbbabbababaababbbabbbbaabbabbabbaaaabbbaaabbbbaabbaaaaaaabbbabbbaaabaababaaabaaaabaaaababaaaaababaaaabaabbaaaabbbabbaabaabbbabbbbbaaabaababbbaaaaabbbbaaabbbbaabbabbbbabbbabbaaaaabaabaaaabbbabbbbbaabbbbabbbbaab...
output:
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ...
result:
Subtask #5:
score: 0
Time Limit Exceeded
Dependency #1:
100%
Accepted
Test #35:
score: 0
Time Limit Exceeded
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
199105 199317 198628 198977 198643 198338 198952 198567 198980 198350 199045 199831 199124 199126 199123 199367 198992 198131 198623 199391 199376 199431 198418 198674 199222 199031 198833 198400 199208 198925 198477 198700 198952 199129 199580 199549 198972 199285 199185 198739 199281 199208 198920...
result:
Subtask #6:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%