結果
| 問題 |
No.2338 Range AtCoder Query
|
| コンテスト | |
| ユーザー |
とりゐ
|
| 提出日時 | 2023-06-02 23:31:00 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,912 bytes |
| コンパイル時間 | 357 ms |
| コンパイル使用メモリ | 82,568 KB |
| 実行使用メモリ | 995,456 KB |
| 最終ジャッジ日時 | 2024-12-28 23:14:59 |
| 合計ジャッジ時間 | 84,975 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 3 RE * 7 TLE * 10 MLE * 14 |
ソースコード
from sys import stdin
input=lambda :stdin.readline()[:-1]
from collections import deque
N,M,Q=map(int,input().split())
memo=[deque() for i in range(M+1)]
for i in range(M+1):
memo[i].append(deque())
P,S=[0]*N,[0]*N
for i in range(N):
P[i],S[i]=input().split()
P[i]=int(P[i])
m=int(Q**0.5)+1
bucket=[[] for i in range(m)]
for i in range(Q):
l,r=map(lambda x:int(x)-1,input().split())
bucket[l*m//N].append((l,r,i))
for i in range(m):
if i&1:
bucket[i].sort(key=lambda x:-x[1])
else:
bucket[i].sort(key=lambda x:x[1])
cnt=[0]*(M+1)
cnt_ac=0
cnt_wa=0
def AddR(idx):
global cnt_ac
global cnt_wa
Pi=P[idx]
Si=S[idx]
memo[Pi][-1].append(Si)
if Si=='AC':
cnt[Pi]+=1
if cnt[Pi]==1:
cnt_ac+=1
cnt_wa+=len(memo[Pi][-1])-1
memo[Pi].append(deque())
def AddL(idx):
global cnt_ac
global cnt_wa
Pi=P[idx]
Si=S[idx]
if Si=='AC':
memo[Pi].appendleft(deque())
memo[Pi][0].appendleft(Si)
if Si=='AC':
cnt[Pi]+=1
if cnt[Pi]==1:
cnt_ac+=1
else:
cnt_wa-=len(memo[Pi][1])-1
elif cnt[Pi]!=0:
cnt_wa+=1
def DelR(idx):
global cnt_ac
global cnt_wa
Pi=P[idx]
Si=S[idx]
if Si=='WA':
memo[Pi][-1].pop()
if Si=='AC':
memo[Pi].pop()
memo[Pi][-1].pop()
cnt[Pi]-=1
if cnt[Pi]==0:
cnt_ac-=1
cnt_wa-=len(memo[Pi][-1])
def DelL(idx):
global cnt_ac
global cnt_wa
Pi=P[idx]
Si=S[idx]
memo[Pi][0].popleft()
if Si=='WA':
if cnt[Pi]:
cnt_wa-=1
else:
memo[Pi].popleft()
cnt[Pi]-=1
if cnt[Pi]==0:
cnt_ac-=1
else:
cnt_wa+=len(memo[Pi][0])-1
cnt=[0]*N
res=0
ans=[0]*Q
L,R=0,0
AddR(0)
for b in bucket:
for l,r,id in b:
while R<r:
R+=1
AddR(R)
while L>l:
L-=1
AddL(L)
while R>r:
DelR(R)
R-=1
while L<l:
DelL(L)
L+=1
ans[id]=(cnt_ac,cnt_wa)
for i in ans:
print(*i)
とりゐ