結果
問題 | 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 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 39 ms
53,368 KB |
testcase_01 | AC | 40 ms
54,256 KB |
testcase_02 | AC | 38 ms
52,764 KB |
testcase_03 | AC | 39 ms
52,816 KB |
testcase_04 | AC | 111 ms
78,216 KB |
testcase_05 | AC | 114 ms
78,088 KB |
testcase_06 | AC | 74 ms
73,840 KB |
testcase_07 | AC | 116 ms
79,140 KB |
testcase_08 | AC | 53 ms
62,976 KB |
testcase_09 | AC | 876 ms
230,516 KB |
testcase_10 | AC | 551 ms
196,876 KB |
testcase_11 | AC | 856 ms
230,852 KB |
testcase_12 | AC | 861 ms
231,124 KB |
testcase_13 | AC | 871 ms
230,976 KB |
testcase_14 | AC | 866 ms
230,880 KB |
testcase_15 | AC | 543 ms
197,232 KB |
testcase_16 | AC | 860 ms
230,508 KB |
testcase_17 | AC | 873 ms
230,600 KB |
testcase_18 | AC | 862 ms
231,116 KB |
testcase_19 | AC | 857 ms
229,452 KB |
testcase_20 | AC | 850 ms
230,152 KB |
testcase_21 | AC | 868 ms
230,860 KB |
testcase_22 | AC | 871 ms
230,400 KB |
testcase_23 | AC | 552 ms
196,968 KB |
testcase_24 | AC | 659 ms
229,596 KB |
testcase_25 | AC | 732 ms
230,672 KB |
testcase_26 | AC | 596 ms
213,992 KB |
testcase_27 | AC | 605 ms
214,368 KB |
ソースコード
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)