結果
| 問題 |
No.3282 Photos and Friends
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-07 20:31:46 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 104 ms / 2,000 ms |
| コード長 | 1,328 bytes |
| コンパイル時間 | 1,045 ms |
| コンパイル使用メモリ | 101,684 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2025-11-07 20:32:55 |
| 合計ジャッジ時間 | 7,748 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 50 |
ソースコード
#include <algorithm>
#include <iostream>
#include <vector>
using u32 = unsigned int;
using i64 = long long;
using u64 = unsigned long long;
using v32 = std::vector<int>;
using v64 = std::vector<i64>;
void solve() {
i64 N, P, Q;
std::cin >> N >> P >> Q;
v64 X(N), A(N), B(N);
v64 L(N), R(N);
for (int i = 0; i < N; i++) {
std::cin >> X[i] >> A[i] >> B[i];
if (X[i] > A[i] + B[i]) {
std::cout << "No\n";
return;
}
i64 p = std::max(X[i] - B[i], 0LL);
P -= (L[i] = p);
i64 q = std::max(X[i] - A[i], 0LL);
Q -= (R[i] = q);
}
if (P < 0 || Q < 0) {
std::cout << "No\n";
return;
}
for (int i = 0; i < N; i++) {
i64 diff = std::min(P, X[i] - L[i] - R[i]);
L[i] += diff;
P -= diff;
diff = std::min(Q, X[i] - L[i] - R[i]);
R[i] += diff;
Q -= diff;
if (L[i] + R[i] < X[i]) {
std::cout << "No\n";
return;
}
}
std::cout << "Yes\n";
for (int i = 0; i < N; i++) {
std::cout << L[i] << " " << R[i] << '\n';
}
}
signed main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
int T = 1;
// std::cin >> T;
while (T--) solve();
return 0;
}