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 |
|
|
| 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 |