Submission #67752980


Source Code Expand

Copy
#include <bits/stdc++.h>
#include <atcoder/segtree>
using namespace std;
using namespace atcoder;
using ll = long long;
struct T {
char left, right;
int lcnt, rcnt, val;
bool same_all;
};
T op(const T &a, const T &b) {
T res;
res.left = a.left == '\0' ? b.left : a.left;
res.right = b.right == '\0' ? a.right : b.right;
if (a.same_all && b.same_all && (a.left == b.left || a.left == '\0' || b.left == '\0')) {
res.val = a.val + b.val;
res.lcnt = res.val;
res.rcnt = res.val;
res.same_all = true;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <bits/stdc++.h>
#include <atcoder/segtree>
using namespace std;
using namespace atcoder;
using ll = long long;

struct T {
    char left, right;
    int lcnt, rcnt, val;
    bool same_all;
};

T op(const T &a, const T &b) {
    T res;
    res.left = a.left == '\0' ? b.left : a.left;
    res.right = b.right == '\0' ? a.right : b.right;
    if (a.same_all && b.same_all && (a.left == b.left || a.left == '\0' || b.left == '\0')) {
        res.val = a.val + b.val;
        res.lcnt = res.val;
        res.rcnt = res.val;
        res.same_all = true;
    } else {
        res.val = max(a.val, b.val);
        if (a.right == b.left) {
            res.val = max(res.val, a.rcnt + b.lcnt);
        }
        res.rcnt = (b.right == '\0' ? a.rcnt : b.rcnt);
        if (b.same_all && (a.right == b.left)) {
            res.rcnt += a.rcnt;
        }
        res.lcnt = (a.left == '\0' ? b.lcnt : a.lcnt);
        if (a.same_all && (a.right == b.left)) {
            res.lcnt += b.lcnt;
        }
        res.same_all = false;
    }
    return res;
}

T e() {
    T res;
    res.left = res.right = '\0';
    res.lcnt = res.rcnt = 0;
    res.val = 0;
    res.same_all = true; // Empty segment is considered same
    return res;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N, Q;
    cin >> N >> Q;
    string S;
    cin >> S;
    segtree<T, op, e> seg(N);
    for (int i = 0; i < N; ++i) {
        seg.set(i, {S[i], S[i], 1, 1, 1, true});
    }
    while (Q--) {
        int q;
        cin >> q;
        if (q == 1) {
            int i;
            char c;
            cin >> i >> c;
            --i; // Convert to 0-based index
            seg.set(i, {c, c, 1, 1, 1, true});
        } else {
            int l, r;
            cin >> l >> r;
            --l; // Convert to 0-based index
            --r; // Convert to 0-based index
            T res = seg.prod(l, r + 1);
            cout << res.val << '\n';
        }
    }
    return 0;
}

Submission Info

Submission Time
Task F - Max Combo
User katsumata68
Language C++ 23 (gcc 12.2)
Score 525
Code Size 2051 Byte
Status AC
Exec Time 377 ms
Memory 34088 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 2
AC × 74
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All evil_01.txt, evil_02.txt, evil_03.txt, evil_04.txt, evil_05.txt, evil_06.txt, evil_07.txt, evil_08.txt, evil_09.txt, evil_10.txt, evil_11.txt, evil_12.txt, evil_13.txt, evil_14.txt, evil_15.txt, evil_16.txt, evil_17.txt, evil_18.txt, evil_19.txt, evil_20.txt, evil_21.txt, evil_22.txt, evil_23.txt, evil_24.txt, evil_25.txt, evil_26.txt, evil_27.txt, evil_28.txt, sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt
Case Name Status Exec Time Memory
evil_01.txt AC 292 ms 33988 KiB
evil_02.txt AC 314 ms 33912 KiB
evil_03.txt AC 297 ms 34016 KiB
evil_04.txt AC 320 ms 34084 KiB
evil_05.txt AC 327 ms 33916 KiB
evil_06.txt AC 357 ms 33952 KiB
evil_07.txt AC 299 ms 33992 KiB
evil_08.txt AC 321 ms 33836 KiB
evil_09.txt AC 322 ms 34008 KiB
evil_10.txt AC 352 ms 33988 KiB
evil_11.txt AC 329 ms 34016 KiB
evil_12.txt AC 356 ms 34012 KiB
evil_13.txt AC 321 ms 34028 KiB
evil_14.txt AC 347 ms 34008 KiB
evil_15.txt AC 300 ms 33956 KiB
evil_16.txt AC 320 ms 34036 KiB
evil_17.txt AC 317 ms 34028 KiB
evil_18.txt AC 342 ms 33992 KiB
evil_19.txt AC 325 ms 34080 KiB
evil_20.txt AC 350 ms 33960 KiB
evil_21.txt AC 319 ms 33976 KiB
evil_22.txt AC 330 ms 33880 KiB
evil_23.txt AC 319 ms 33936 KiB
evil_24.txt AC 330 ms 33984 KiB
evil_25.txt AC 307 ms 33992 KiB
evil_26.txt AC 306 ms 33872 KiB
evil_27.txt AC 255 ms 33940 KiB
evil_28.txt AC 304 ms 33912 KiB
sample_01.txt AC 1 ms 3508 KiB
sample_02.txt AC 1 ms 3488 KiB
test_01.txt AC 333 ms 33964 KiB
test_02.txt AC 337 ms 33916 KiB
test_03.txt AC 333 ms 34012 KiB
test_04.txt AC 336 ms 33960 KiB
test_05.txt AC 334 ms 33984 KiB
test_06.txt AC 336 ms 33964 KiB
test_07.txt AC 338 ms 33972 KiB
test_08.txt AC 342 ms 33956 KiB
test_09.txt AC 374 ms 33984 KiB
test_10.txt AC 377 ms 33932 KiB
test_11.txt AC 370 ms 33944 KiB
test_12.txt AC 373 ms 33976 KiB
test_13.txt AC 373 ms 33876 KiB
test_14.txt AC 376 ms 33968 KiB
test_15.txt AC 377 ms 33936 KiB
test_16.txt AC 375 ms 33960 KiB
test_17.txt AC 372 ms 33840 KiB
test_18.txt AC 377 ms 33840 KiB
test_19.txt AC 119 ms 3552 KiB
test_20.txt AC 119 ms 3648 KiB
test_21.txt AC 127 ms 3492 KiB
test_22.txt AC 125 ms 3560 KiB
test_23.txt AC 121 ms 3564 KiB
test_24.txt AC 120 ms 3556 KiB
test_25.txt AC 116 ms 3572 KiB
test_26.txt AC 116 ms 3436 KiB
test_27.txt AC 116 ms 3572 KiB
test_28.txt AC 116 ms 3492 KiB
test_29.txt AC 221 ms 33916 KiB
test_30.txt AC 220 ms 33956 KiB
test_31.txt AC 334 ms 33972 KiB
test_32.txt AC 334 ms 33960 KiB
test_33.txt AC 338 ms 33984 KiB
test_34.txt AC 337 ms 33840 KiB
test_35.txt AC 334 ms 33920 KiB
test_36.txt AC 335 ms 34012 KiB
test_37.txt AC 338 ms 33936 KiB
test_38.txt AC 337 ms 34084 KiB
test_39.txt AC 352 ms 33916 KiB
test_40.txt AC 344 ms 33916 KiB
test_41.txt AC 367 ms 34088 KiB
test_42.txt AC 361 ms 33916 KiB
test_43.txt AC 309 ms 33952 KiB
test_44.txt AC 310 ms 33952 KiB


2025-12-27 (Sat)
20:19:30 +09:00