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