Submission #67738124


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int N = 5e5 + 5;

int n, T;
struct node {
    int ans, pre, suf, len;
    char lc, rc;
};

node tree[4 * N];
char s[N];

node tg(node a, node b) {
    node t;
    t.len = a.len + b.len;
    t.lc = a.lc;
    t.rc = b.rc;
    t.ans = max(a.ans, b.ans);
    if (a.rc == b.lc) {
        t.ans = max(t.ans, a.suf + b.pre);
    }
    t.pre = a.pre;
    if (a.pre == a.len && a.rc == b.lc) {
        t.pre = a.pre + b.pre;
    }
    t.suf = b.suf;
    if (b.suf == b.len && a.rc == b.lc) {
        t.suf = b.suf + a.suf;
    }
    return t;
}

void build(int v, int tl, int tr) {
    if (tl == tr) {
        tree[v] = {1, 1, 1, 1, s[tl], s[tl]};
        return;
    }
    int tm = (tl + tr) / 2;
    build(v * 2, tl, tm);
    build(v * 2 + 1, tm + 1, tr);
    tree[v] = tg(tree[v * 2], tree[v * 2 + 1]);
}

void update(int v, int tl, int tr, int pos, char c) {
    if (tl == tr) {
        tree[v] = {1, 1, 1, 1, c, c};
        return;
    }
    int tm = (tl + tr) / 2;
    if (pos <= tm) {
        update(v * 2, tl, tm, pos, c);
    } else {
        update(v * 2 + 1, tm + 1, tr, pos, c);
    }
    tree[v] = tg(tree[v * 2], tree[v * 2 + 1]);
}

node query(int v, int tl, int tr, int l, int r) {
    if (l <= tl && tr <= r) {
        return tree[v];
    }
    int tm = (tl + tr) / 2;
    if (r <= tm) {
        return query(v * 2, tl, tm, l, r);
    }
    if (l > tm) {
        return query(v * 2 + 1, tm + 1, tr, l, r);
    }
    node ln = query(v * 2, tl, tm, l, tm);
    node rn = query(v * 2 + 1, tm + 1, tr, tm + 1, r);
    return tg(ln, rn);
}

int main() {
    scanf("%d%d", &n, &T);
    scanf("%s", s);
    build(1, 0, n - 1);
    while (T--) {
        int op;
        scanf("%d", &op);
        if (op == 1) {
            int i;
            char c;
            scanf("%d %c", &i, &c);
            update(1, 0, n - 1, i - 1, c);
        } else {
            int l, r;
            scanf("%d%d", &l, &r);
            node t = query(1, 0, n - 1, l - 1, r - 1);
            printf("%d\n", t.ans);
        }
    }
    return 0;
}

Submission Info

Submission Time
Task F - Max Combo
User MhxMa
Language C++ 20 (gcc 12.2)
Score 525
Code Size 2172 Byte
Status AC
Exec Time 313 ms
Memory 24948 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:77:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   77 |     scanf("%d%d", &n, &T);
      |     ~~~~~^~~~~~~~~~~~~~~~
Main.cpp:78:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   78 |     scanf("%s", s);
      |     ~~~~~^~~~~~~~~
Main.cpp:82:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   82 |         scanf("%d", &op);
      |         ~~~~~^~~~~~~~~~~
Main.cpp:86:18: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   86 |             scanf("%d %c", &i, &c);
      |             ~~~~~^~~~~~~~~~~~~~~~~
Main.cpp:90:18: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   90 |             scanf("%d%d", &l, &r);
      |             ~~~~~^~~~~~~~~~~~~~~~

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 236 ms 24756 KiB
evil_02.txt AC 276 ms 24544 KiB
evil_03.txt AC 257 ms 24552 KiB
evil_04.txt AC 300 ms 24696 KiB
evil_05.txt AC 259 ms 24684 KiB
evil_06.txt AC 300 ms 24616 KiB
evil_07.txt AC 261 ms 24752 KiB
evil_08.txt AC 303 ms 24624 KiB
evil_09.txt AC 260 ms 24688 KiB
evil_10.txt AC 297 ms 24544 KiB
evil_11.txt AC 258 ms 24548 KiB
evil_12.txt AC 297 ms 24552 KiB
evil_13.txt AC 264 ms 24680 KiB
evil_14.txt AC 292 ms 24584 KiB
evil_15.txt AC 261 ms 24508 KiB
evil_16.txt AC 295 ms 24548 KiB
evil_17.txt AC 258 ms 24496 KiB
evil_18.txt AC 287 ms 24756 KiB
evil_19.txt AC 262 ms 24692 KiB
evil_20.txt AC 294 ms 24688 KiB
evil_21.txt AC 276 ms 24816 KiB
evil_22.txt AC 285 ms 24760 KiB
evil_23.txt AC 275 ms 24560 KiB
evil_24.txt AC 290 ms 24508 KiB
evil_25.txt AC 248 ms 24564 KiB
evil_26.txt AC 244 ms 24564 KiB
evil_27.txt AC 161 ms 24552 KiB
evil_28.txt AC 279 ms 24536 KiB
sample_01.txt AC 1 ms 3628 KiB
sample_02.txt AC 1 ms 3632 KiB
test_01.txt AC 284 ms 24756 KiB
test_02.txt AC 284 ms 24816 KiB
test_03.txt AC 284 ms 24548 KiB
test_04.txt AC 284 ms 24552 KiB
test_05.txt AC 281 ms 24492 KiB
test_06.txt AC 283 ms 24700 KiB
test_07.txt AC 290 ms 24548 KiB
test_08.txt AC 283 ms 24588 KiB
test_09.txt AC 313 ms 24512 KiB
test_10.txt AC 310 ms 24616 KiB
test_11.txt AC 310 ms 24684 KiB
test_12.txt AC 311 ms 24696 KiB
test_13.txt AC 310 ms 24508 KiB
test_14.txt AC 313 ms 24496 KiB
test_15.txt AC 308 ms 24728 KiB
test_16.txt AC 310 ms 24560 KiB
test_17.txt AC 310 ms 24620 KiB
test_18.txt AC 310 ms 24688 KiB
test_19.txt AC 177 ms 3572 KiB
test_20.txt AC 178 ms 3828 KiB
test_21.txt AC 190 ms 3772 KiB
test_22.txt AC 190 ms 3888 KiB
test_23.txt AC 188 ms 3756 KiB
test_24.txt AC 186 ms 3776 KiB
test_25.txt AC 180 ms 3624 KiB
test_26.txt AC 183 ms 3572 KiB
test_27.txt AC 179 ms 3692 KiB
test_28.txt AC 179 ms 3640 KiB
test_29.txt AC 107 ms 24948 KiB
test_30.txt AC 107 ms 24924 KiB
test_31.txt AC 292 ms 24548 KiB
test_32.txt AC 294 ms 24700 KiB
test_33.txt AC 290 ms 24688 KiB
test_34.txt AC 296 ms 24564 KiB
test_35.txt AC 291 ms 24692 KiB
test_36.txt AC 296 ms 24616 KiB
test_37.txt AC 294 ms 24692 KiB
test_38.txt AC 293 ms 24688 KiB
test_39.txt AC 302 ms 24552 KiB
test_40.txt AC 295 ms 24748 KiB
test_41.txt AC 301 ms 24812 KiB
test_42.txt AC 305 ms 24592 KiB
test_43.txt AC 211 ms 24564 KiB
test_44.txt AC 210 ms 24628 KiB