結果
| 問題 |
No.1430 Coup de Coupon
|
| コンテスト | |
| ユーザー |
burita083
|
| 提出日時 | 2021-03-14 15:44:53 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 920 bytes |
| コンパイル時間 | 207 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 445,700 KB |
| 最終ジャッジ日時 | 2024-11-06 05:36:43 |
| 合計ジャッジ時間 | 4,197 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 3 WA * 3 TLE * 1 -- * 20 |
ソースコード
N, C = map(int, input().split())
P = []
for i in range(N):
p = int(input())
P.append(p)
TX = [tuple(map(int,input().split())) for i in range(C)]
ans = 0
items = set()
qupons = set()
l = []
for idx, p in enumerate(P):
for i, (t, x) in enumerate(TX):
if t == 1:
l.append((idx, i, min(x, p)))
else:
l.append((idx, i, p-p*(100-x)//100))
buys = []
l.sort(key=lambda x:(-x[2]))
for itemsId, couponId, v in l:
if itemsId in items:
continue
if couponId in qupons:
continue
items.add(itemsId)
qupons.add(couponId)
buys.append((itemsId, couponId))
for i, p in enumerate(P):
flag = False
for itemsId, couponId in buys:
if itemsId == i:
flag = True
if TX[couponId][0] == 1:
ans += max(p-TX[couponId][1], 0)
break
else:
rate = (100-TX[couponId][1])/100
ans += p*rate
break
if flag == False:
ans += p
print(ans)
burita083