結果

問題 No.3282 Photos and Friends
ユーザー 00 Sakuda
提出日時 2025-09-27 01:30:56
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 850 bytes
コンパイル時間 1,103 ms
コンパイル使用メモリ 88,584 KB
実行使用メモリ 11,008 KB
最終ジャッジ日時 2025-09-27 01:31:11
合計ジャッジ時間 11,164 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 37 WA * 13
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
int main() {
	int N;ll P, Q;cin >> N >> P >> Q;
	vector<ll> X(N), A(N), B(N);
	for (int i = 0;i < N;i++) cin >> X[i] >> A[i] >> B[i];
	vector<ll> C(N);
	ll sa = 0;
	ll sc = 0;
	ll sx = 0;
	for (int i = 0;i < N;i++) {
		if (A[i]+B[i] < X[i]) {
			cout << "No" << endl;
			return 0;
		}
		sa += A[i];
		C[i] = max(0LL, X[i]-B[i]);
		sc += C[i];
		sx += X[i];
	
	}
	ll L = max(sc, sx - Q);
	ll R = min(P, sa);
	if (L > R) {
		cout << "No" << endl;
		return 0;
	}
	cout << "Yes" << endl;
	vector<ll> ret = C;
	ll now = sc;
	for (int i = 0;i < N;i++) {
		if (now == L) break;
		ll dif = L - now;
		if (C[i]+dif <= A[i]) {
			ret[i] += dif;
			break;
		} 
		ret[i] = A[i];
		now += A[i] - C[i];
	}
	for (int i = 0;i < N;i++) cout << ret[i] << " " << X[i] - ret[i] << endl;
}
0