結果

問題 No.3534 Make Many Fences
コンテスト
ユーザー tnakao0123
提出日時 2026-05-09 13:59:06
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 861 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 245 ms
コンパイル使用メモリ 54,272 KB
実行使用メモリ 7,972 KB
最終ジャッジ日時 2026-05-09 13:59:11
合計ジャッジ時間 1,426 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 2 WA * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

/* -*- coding: utf-8 -*-
 *
 * 3534.cc:  No.3534 Make Many Fences - yukicoder
 */

#include<cstdio>
#include<algorithm>

using namespace std;

/* constant */

/* typedef */

using ll = long long;

/* global variables */

/* subroutines */

ll calc(int n, int m, int d) {
  ll nn = n - d, mm = m + (ll)(d / 2) * 4;
  ll f = min(nn / 4, mm / 2) * 3;
  return f;
}

/* main */

int main() {
  int tn;
  scanf("%d", &tn);

  while (tn--) {
    int n, m;
    scanf("%d%d", &n, &m);

    int d0 = 0, d1 = n;
    while (d0 + 2 < d1) {
      int dd0 = (d0 * 2LL + d1) / 3;
      int dd1 = (d0 + d1 * 2LL) / 3;
      ll f0 = calc(n, m, dd0);
      ll f1 = calc(n, m, dd1);
      if (f0 < f1) d0 = dd0;
      else d1 = dd1;
    }

    ll maxf = 0;
    for (int d = d0; d <= d1; d++)
      maxf = max(maxf, calc(n, m, d));

    printf("%lld\n", maxf);
  }

  return 0;
}

0