結果
問題 |
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()