結果
| 問題 |
No.3282 Photos and Friends
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-10-09 01:25:45 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,649 bytes |
| コンパイル時間 | 2,671 ms |
| コンパイル使用メモリ | 81,848 KB |
| 実行使用メモリ | 141,304 KB |
| 最終ジャッジ日時 | 2025-10-09 01:26:01 |
| 合計ジャッジ時間 | 13,044 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 1 |
| other | AC * 13 WA * 37 |
ソースコード
## https://yukicoder.me/problems/no/3282
def main():
N, P, Q = map(int, input().split())
xab = []
for _ in range(N):
X, a, b = map(int, input().split())
xab.append((X, a, b))
# X <= A + Bを満たす??
sum_x = 0
for x, a, b in xab:
if x > a + b:
print("No")
return
sum_x += x
# sumX <= P + Qを満たす?
if sum_x > P + Q:
print("No")
return
intervals = []
for x, a, b in xab:
i_min = max(0, x - b)
i_max = min(x, a)
if i_min > i_max:
print("No")
return
intervals.append((i_min, i_max))
border_x_min = max(0, sum_x - Q)
a = 0
answers = [[0, 0] for _ in range(N)]
for index, v in enumerate(intervals):
i, _ = v
a += i
answers[index][0] = i
answers[index][1] = x - i
if a > P:
print("No")
return
if border_x_min <= a <=P:
print("Yes")
for a, b in answers:
print(a, b)
return
for index in range(N):
i_min, i_max = intervals[index]
d = i_max - i_min
if d >= border_x_min - a:
y = border_x_min - a
a += y
answers[index][0] += y
answers[index][1] -= y
break
else:
a += d
answers[index][0] += d
answers[index][1] -= d
if a < border_x_min:
print("No")
return
print("Yes")
for a, b in answers:
print(a, b)
return
if __name__ == "__main__":
main()