Submission #75949322


Source Code Expand

#D
import sys
input = sys.stdin.readline
N, Q = map(int,input().split())
S = input().strip()

#블럭 구성(Code, start, end, w)
blockinfo = [None]*N
blockinfo[0] = 0
block = []
start = 0
end = 0
code = 0
tmp = []
for i in range(1, N):
    if S[i] == S[i-1]:
        end += 1
        blockinfo[i] = code
    else:
        if S[i - 1] in 'RGB':
            block.append((code, start, end, (end - start + 1) // 2))
        else:
            block.append((code, start, end, 0))
            tmp.append(code)
        start = i
        end = i
        code += 1
        blockinfo[i] = code

if S[end] in 'RGB':
    block.append((code, start, end, (end - start + 1) // 2))
else:
    block.append((code, start, end, 0))
    tmp.append(code)

M = len(block)
isx = [False]*M
for i in tmp:
    isx[i] = True
s = [0]
for i in range(M):
    s.append(s[-1] + block[i][3])


for i in range(Q):
    ans = 0
    l, r = map(int, input().split())
    l, r = l-1, r-1
    lb = blockinfo[l]
    rb = blockinfo[r]
    if lb == rb and not isx[lb]:
        ans = (r - l + 1)//2
    else:
        if block[lb][1] < l:
            if not isx[lb]:
                ans += (block[lb][2] - l + 1)//2
            lb += 1
        if block[rb][2] > r:
            if not isx[rb]:
                ans += (r - block[rb][1] + 1)//2
            rb -= 1

        if lb <= rb:
            ans += s[rb + 1] - s[lb]

    print(ans)

Submission Info

Submission Time
Task D - Coloring
User kkigon
Language Python (PyPy 3.11-v7.3.20)
Score 100
Code Size 1456 Byte
Status AC
Exec Time 565 ms
Memory 198216 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 44
Set Name Test Cases
Sample 00-sample-001.txt
All 00-sample-001.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt, 01-037.txt, 01-038.txt, 01-039.txt, 01-040.txt, 01-041.txt, 01-042.txt, 01-043.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 54 ms 79520 KiB
01-001.txt AC 549 ms 175484 KiB
01-002.txt AC 558 ms 176116 KiB
01-003.txt AC 545 ms 176152 KiB
01-004.txt AC 554 ms 175136 KiB
01-005.txt AC 551 ms 175492 KiB
01-006.txt AC 549 ms 176208 KiB
01-007.txt AC 551 ms 175708 KiB
01-008.txt AC 557 ms 175840 KiB
01-009.txt AC 565 ms 175956 KiB
01-010.txt AC 551 ms 175532 KiB
01-011.txt AC 549 ms 176824 KiB
01-012.txt AC 549 ms 176704 KiB
01-013.txt AC 551 ms 175824 KiB
01-014.txt AC 551 ms 176100 KiB
01-015.txt AC 549 ms 175972 KiB
01-016.txt AC 304 ms 112080 KiB
01-017.txt AC 302 ms 112048 KiB
01-018.txt AC 304 ms 111864 KiB
01-019.txt AC 301 ms 111888 KiB
01-020.txt AC 509 ms 194900 KiB
01-021.txt AC 499 ms 195000 KiB
01-022.txt AC 511 ms 198216 KiB
01-023.txt AC 501 ms 155748 KiB
01-024.txt AC 489 ms 140364 KiB
01-025.txt AC 381 ms 117588 KiB
01-026.txt AC 381 ms 117460 KiB
01-027.txt AC 383 ms 117664 KiB
01-028.txt AC 356 ms 117180 KiB
01-029.txt AC 355 ms 117732 KiB
01-030.txt AC 387 ms 117608 KiB
01-031.txt AC 403 ms 117548 KiB
01-032.txt AC 378 ms 117448 KiB
01-033.txt AC 350 ms 116764 KiB
01-034.txt AC 437 ms 151612 KiB
01-035.txt AC 449 ms 153988 KiB
01-036.txt AC 435 ms 152892 KiB
01-037.txt AC 405 ms 117812 KiB
01-038.txt AC 54 ms 79604 KiB
01-039.txt AC 52 ms 79856 KiB
01-040.txt AC 52 ms 79988 KiB
01-041.txt AC 51 ms 79740 KiB
01-042.txt AC 51 ms 79568 KiB
01-043.txt AC 51 ms 79568 KiB