結果
| 問題 | No.3282 Photos and Friends | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2025-10-09 01:28:02 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 437 ms / 2,000 ms | 
| コード長 | 1,674 bytes | 
| コンパイル時間 | 506 ms | 
| コンパイル使用メモリ | 82,120 KB | 
| 実行使用メモリ | 140,928 KB | 
| 最終ジャッジ日時 | 2025-10-09 01:28:14 | 
| 合計ジャッジ時間 | 10,663 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 50 | 
ソースコード
## 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
        x, _, _ = xab[index]
        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()
            
            
            
        