結果
| 問題 |
No.1328 alligachi-problem
|
| コンテスト | |
| ユーザー |
persimmon_t01
|
| 提出日時 | 2021-01-08 20:52:05 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,909 bytes |
| コンパイル時間 | 99 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 260,736 KB |
| 最終ジャッジ日時 | 2024-11-16 08:46:30 |
| 合計ジャッジ時間 | 44,733 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 5 WA * 5 TLE * 15 |
ソースコード
def main(n,cxy):
# xで分類
bary=[[set(),set()] for _ in range(n+1)]
rary=[[set(),set()] for _ in range(n+1)]
dc={'B':0,'R':1}
B=0
R=1
for i,(c,x,y) in enumerate(cxy):
if x=='B':
bary[int(y)][dc[c]].add(i+1)
else:
rary[int(y)][dc[c]].add(i+1)
# bart[i][B]:青がi個の状態で列に加えないといけない青ボール。
# bart[i][R]:青がi個の状態で列に加えないといけない赤ボール。
# rart[i][B]:赤がi個の状態で列に加えないといけない青ボール。
# rart[i][R]:赤がi個の状態で列に加えないといけない赤ボール。
numb=0
numr=0
ret=[]
while len(ret)<n:
if bary[numb][R] and rary[numr][B]:return [-1]
elif bary[numb][R] and rary[numr][R]:
ret.append(rary[numr][R].pop())
numr+=1
elif rary[numr][B] and bary[numb][B]:
ret.append(bary[numb][B].pop())
numb+=1
elif bary[numb][B] and rary[numr][B]:
ret.append(bary[numb][B].pop())
numb+=1
elif bary[numb][R] and rary[numr][R]:
ret.append(rary[numr][R].pop())
numr+=1
elif bary[numb][B]:
ret.append(bary[numb][B].pop())
numb+=1
elif bary[numb][R]:
ret.append(bary[numb][R].pop())
numr+=1
elif rary[numr][B]:
ret.append(rary[numr][B].pop())
numb+=1
elif rary[numr][R]:
ret.append(rary[numr][R].pop())
numr+=1
else:
return [-1]
return ret
def chk(n,cxy,ret):
numb=0
numr=0
for i in ret:
i-=1
c,x,y=cxy[i]
y=int(y)
if x=='R':
if numr!=y:return False
elif x=='B':
if numb!=y:return False
if c=='R':
numr+=1
else:
numb+=1
return True
if __name__ == "__main__":
n=int(input())
cxy=[list(input().split()) for _ in range(n)]
ret=main(n,cxy)
if ret[0]==-1:
print('No')
else:
print('Yes')
print(*ret)
#print(chk(n,cxy,ret))
persimmon_t01