結果
| 問題 |
No.2623 Room Allocation
|
| コンテスト | |
| ユーザー |
nikoro256
|
| 提出日時 | 2024-02-09 21:55:16 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,615 ms / 2,000 ms |
| コード長 | 973 bytes |
| コンパイル時間 | 194 ms |
| コンパイル使用メモリ | 82,080 KB |
| 実行使用メモリ | 214,688 KB |
| 最終ジャッジ日時 | 2024-09-28 15:11:51 |
| 合計ジャッジ時間 | 9,903 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
import sys
input=sys.stdin.readline
N,X,Y=map(int,input().split())
dat=[]
for _ in range(N):
dat.append(list(map(str,input().split())))
point=[[0,0] for _ in range(X+Y)]
for i in range(N):
p,c=dat[i]
p=int(p)
if c=='A':
point[i%(X+Y)][0]+=p
else:
point[i%(X+Y)][1]+=p
lis=[]
for i in range(X+Y):
if point[i]!=[0,0]:
lis.append([-point[i][0]+point[i][1],i,'A'])
lis.append([-point[i][1]+point[i][0],i,'B'])
lis.sort()
ans=['']*(X+Y)
countA,countB=X,Y
for sub,i,c in lis:
if ans[i]=='':
if c=='A':
if countA>0:
ans[i]='A'
countA-=1
else:
ans[i]='B'
countB-=1
if c=='B':
if countB>0:
ans[i]='B'
countB-=1
else:
ans[i]='A'
countA-=1
fa=0
for i in range(N):
if ans[i%(X+Y)]==dat[i][1]:
fa+=int(dat[i][0])
print(fa)
nikoro256