結果
問題 |
No.3282 Photos and Friends
|
ユーザー |
|
提出日時 | 2025-09-27 01:22:08 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 834 bytes |
コンパイル時間 | 1,003 ms |
コンパイル使用メモリ | 88,448 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2025-09-27 01:22:19 |
合計ジャッジ時間 | 10,691 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 1 |
other | AC * 37 WA * 13 |
ソースコード
#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) continue; ll dif = L - now; if (C[i]+dif <= A[i]) { ret[i] += dif; break; } now += A[i] - C[i]; } for (int i = 0;i < N;i++) cout << ret[i] << " " << X[i] - ret[i] << endl; }