結果

問題 No.3282 Photos and Friends
ユーザー tnakao0123
提出日時 2025-09-28 12:10:15
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 100 ms / 2,000 ms
コード長 1,208 bytes
コンパイル時間 453 ms
コンパイル使用メモリ 42,460 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-09-28 12:10:37
合計ジャッジ時間 7,702 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 50
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:31:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   31 |   scanf("%d%lld%lld", &n, &p, &q);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:33:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   33 |     scanf("%d%d%d", xs + i, as + i, bs + i);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ソースコード

diff #

/* -*- coding: utf-8 -*-
 *
 * 3282.cc:  No.3282 Photos and Friends - yukicoder
 */

#include<cstdio>
#include<algorithm>

using namespace std;

/* constant */

const int MAX_N = 200000;

/* typedef */

using ll = long long;

/* global variables */

int xs[MAX_N], as[MAX_N], bs[MAX_N];
int cas[MAX_N], cbs[MAX_N];

/* subroutines */

/* main */

int main() {
  int n;
  ll p, q;
  scanf("%d%lld%lld", &n, &p, &q);
  for (int i = 0; i < n; i++)
    scanf("%d%d%d", xs + i, as + i, bs + i);

  ll r = 0;
  for (int i = 0; i < n; i++) {
    cas[i] = max(0, xs[i] - bs[i]);
    cbs[i] = max(0, xs[i] - as[i]);
    if (cas[i] + cbs[i] > xs[i]) { puts("No"); return 0; }
    p -= cas[i], q -= cbs[i];
    r += xs[i] - (cas[i] + cbs[i]);
  }

  if (p >= 0 && q >= 0 && p + q >= r) {
    for (int i = 0; i < n; i++) {
      if (cas[i] + cbs[i] < xs[i] && p > 0) {
	int dp = min((ll)(xs[i] - (cas[i] + cbs[i])), p);
	cas[i] += dp, p -= dp;
      }
      if (cas[i] + cbs[i] < xs[i] && q > 0) {
	int dq = min((ll)(xs[i] - (cas[i] + cbs[i])), q);
	cbs[i] += dq, q -= dq;
      }
    }
    
    puts("Yes");
    for (int i = 0; i < n; i++) printf("%d %d\n", cas[i], cbs[i]);
  }
  else
    puts("No");
  
  return 0;
}
0