結果
| 問題 |
No.1328 alligachi-problem
|
| コンテスト | |
| ユーザー |
persimmon_t01
|
| 提出日時 | 2021-01-08 21:22:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 876 ms / 2,000 ms |
| コード長 | 2,253 bytes |
| コンパイル時間 | 284 ms |
| コンパイル使用メモリ | 82,564 KB |
| 実行使用メモリ | 231,124 KB |
| 最終ジャッジ日時 | 2024-11-16 09:53:27 |
| 合計ジャッジ時間 | 21,231 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 25 |
ソースコード
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:
ary=[len(bary[numb][B])>0,len(rary[numr][B])>0,len(bary[numb][R])>0,len(rary[numr][R])>0]
num=0
for i in range(4):
if ary[i]:num+=1<<i
if ary[1] and ary[2]:
return [-1]
elif num==0:
return [-1]
elif num==1:
ret.append(bary[numb][B].pop())
numb+=1
elif num==2:
ret.append(rary[numr][B].pop())
numb+=1
elif num==4:
ret.append(bary[numb][R].pop())
numr+=1
elif num==8:
ret.append(rary[numr][R].pop())
numr+=1
elif num==3:
ret.append(bary[numb][B].pop())
numb+=1
elif num==5:
ret.append(bary[numb][R].pop())
numr+=1
elif num==6:pass
elif num==7:pass
elif num==9:
ret.append(bary[numb][B].pop())
numb+=1
ret.append(rary[numr][R].pop())
numr+=1
elif num==10:
ret.append(rary[numr][B].pop())
numb+=1
elif num==11:
ret.append(bary[numb][B].pop())
numb+=1
elif num==12:
ret.append(rary[numr][R].pop())
numr+=1
elif num==13:
ret.append(rary[numr][R].pop())
numr+=1
elif num==14:pass
elif num==15:pass
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)
persimmon_t01