結果
| 問題 |
No.3282 Photos and Friends
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-09-20 23:37:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,498 bytes |
| コンパイル時間 | 302 ms |
| コンパイル使用メモリ | 82,900 KB |
| 実行使用メモリ | 144,988 KB |
| 最終ジャッジ日時 | 2025-09-20 23:37:16 |
| 合計ジャッジ時間 | 9,584 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 49 WA * 1 |
ソースコード
import sys
def solve():
data = sys.stdin.read().strip().split()
if not data:
return
it = iter(data)
N = int(next(it)); P = int(next(it)); Q = int(next(it))
X = [0]*N
A = [0]*N
B = [0]*N
for i in range(N):
X[i] = int(next(it)); A[i] = int(next(it)); B[i] = int(next(it))
L = [0]*N
R = [0]*N
sumL = 0
sumR = 0
S = 0
for i in range(N):
S += X[i]
Li = max(0, X[i] - B[i])
Ri = min(A[i], X[i])
L[i] = Li
R[i] = Ri
sumL += Li
sumR += Ri
# feasible total a sum must be in intersection of [sumL,sumR] and [S-Q, P]
need_low = S - Q # >= this to ensure sum b_i <= Q
need_high = P # <= this to ensure sum a_i <= P
lo = max(sumL, need_low)
hi = min(sumR, need_high)
if lo > hi:
print("No")
return
T = lo # choose any value in [lo,hi]; lo is fine
delta = T - sumL # non-negative
a = L[:] # start with minimums
for i in range(N):
if delta <= 0:
break
can = R[i] - L[i]
give = can if can <= delta else delta
a[i] += give
delta -= give
# final sanity (not necessary but safe)
sum_a = sum(a)
sum_b = S - sum_a
if sum_a <= P and sum_b <= Q:
print("Yes")
out = []
for i in range(N):
out.append(f"{a[i]} {X[i]-a[i]}")
print("\n".join(out))
else:
print("No")
if __name__ == "__main__":
solve()