题解 | #涂颜料#
涂颜料
https://www.nowcoder.com/practice/4ef038ae1c5f4524b8a8a0c1e6b062a1
n = int(input())
q = int(input())
lr = [list(map(int, input().split())) for _ in range(q)]
# 使用差分数组记录区间更新
diff = [0] * (n + 1) # 多一个元素,方便处理边界
# 更新差分数组
for l, r in lr:
diff[l - 1] += 1 # 区间左端加 1
if r < n:
diff[r] -= 1 # 区间右端的下一位减 1
# 计算覆盖次数(前缀和)
coverage = [0] * n
coverage[0] = diff[0]
for i in range(1, n):
coverage[i] = coverage[i - 1] + diff[i]
# 根据覆盖次数确定颜色
color = [''] * n
for i in range(n):
if coverage[i] == 0:
color[i] = "O"
else:
mod = coverage[i] % 3
if mod == 1:
color[i] = "R"
elif mod == 2:
color[i] = "G"
else:
color[i] = "B"
# 输出结果
print(''.join(color))
