提出 #25249682


ソースコード 拡げる

#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <iostream>
#include <vector>

#include <atcoder/segtree>

using usize = size_t;

namespace RangeMaxQuery {
int64_t op(int64_t a, int64_t b) { return std::max(a, b); }
int64_t e() { return 0; }
using segtree = atcoder::segtree<int64_t, op, e>;
} // namespace RangeMaxQuery

namespace RangeMinQuery {
int64_t op(int64_t a, int64_t b) { return std::min(a, b); }
int64_t e() { return 1ll << 62; }
using segtree = atcoder::segtree<int64_t, op, e>;
} // namespace RangeMinQuery

int main(void) {
  // input
  usize N, X, Y;
  std::cin >> N >> X >> Y;
  int64_t B, C;
  std::cin >> B >> C;
  if (B < C) {
    std::swap(X, Y);
    std::swap(B, C);
  }
  std::vector<int64_t> A(N);
  for (auto &a : A)
    std::cin >> a;

  // solve
  std::sort(A.begin(), A.end());
  RangeMaxQuery::segtree seg_max(A);
  RangeMinQuery::segtree seg_min(A);
  const auto kmin = (X + Y < N ? 0 : X + Y - N);
  const auto kmax = std::min(X, Y);

  int64_t ans = 1ll << 62;
  for (usize k = kmin; k <= kmax; ++k) {
    int64_t ma = RangeMaxQuery::e(), mi = RangeMinQuery::e();

    if (k - 0 > 0)
      ma = std::max(ma, seg_max.prod(0, k) + B + C);
    if (X - k > 0)
      ma = std::max(ma, seg_max.prod(k, X) + B);
    if ((X + Y - k) - X > 0)
      ma = std::max(ma, seg_max.prod(X, X + Y - k) + C);
    if (N - (X + Y - k) > 0)
      ma = std::max(ma, seg_max.prod(X + Y - k, N));

    if (k - 0 > 0)
      mi = std::min(mi, seg_min.prod(0, k) + B + C);
    if (X - k > 0)
      mi = std::min(mi, seg_min.prod(k, X) + B);
    if ((X + Y - k) - X > 0)
      mi = std::min(mi, seg_min.prod(X, X + Y - k) + C);
    if (N - (X + Y - k) > 0)
      mi = std::min(mi, seg_min.prod(X + Y - k, N));

    ans = std::min(ans, ma - mi);
  }

  // output
  std::cout << ans << std::endl;
}

提出情報

提出日時
問題 H - Marbles and Boxes
ユーザ Cyanmond
言語 C++ (GCC 9.2.1)
得点 500
コード長 1889 Byte
結果 AC
実行時間 196 ms
メモリ 13540 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 2
AC × 52
セット名 テストケース
Sample example0.txt, example1.txt
All Xzero0.txt, Xzero1.txt, Xzero2.txt, Xzero3.txt, Xzero4.txt, Yzero0.txt, Yzero1.txt, Yzero2.txt, Yzero3.txt, Yzero4.txt, example0.txt, example1.txt, hand0.txt, hand1.txt, hand2.txt, killer0.txt, killer1.txt, killer2.txt, killer3.txt, killer4.txt, killer5.txt, killer6.txt, killer7.txt, killer8.txt, killer9.txt, large_random0.txt, large_random1.txt, large_random2.txt, large_random3.txt, large_random4.txt, large_random5.txt, large_random6.txt, large_random7.txt, large_random8.txt, large_random9.txt, maximum0.txt, maximum_random0.txt, maximum_random1.txt, maximum_random2.txt, maximum_random3.txt, maximum_random4.txt, maximum_random5.txt, maximum_random6.txt, maximum_random7.txt, maximum_random8.txt, maximum_random9.txt, minimum0.txt, small_random0.txt, small_random1.txt, small_random2.txt, small_random3.txt, small_random4.txt
ケース名 結果 実行時間 メモリ
Xzero0.txt AC 106 ms 12660 KiB
Xzero1.txt AC 93 ms 12352 KiB
Xzero2.txt AC 70 ms 8164 KiB
Xzero3.txt AC 7 ms 3680 KiB
Xzero4.txt AC 117 ms 12928 KiB
Yzero0.txt AC 35 ms 5384 KiB
Yzero1.txt AC 19 ms 4428 KiB
Yzero2.txt AC 96 ms 12584 KiB
Yzero3.txt AC 86 ms 12304 KiB
Yzero4.txt AC 111 ms 12860 KiB
example0.txt AC 2 ms 3500 KiB
example1.txt AC 2 ms 3572 KiB
hand0.txt AC 2 ms 3456 KiB
hand1.txt AC 2 ms 3444 KiB
hand2.txt AC 102 ms 13468 KiB
killer0.txt AC 192 ms 13192 KiB
killer1.txt AC 195 ms 13176 KiB
killer2.txt AC 194 ms 13144 KiB
killer3.txt AC 193 ms 13040 KiB
killer4.txt AC 195 ms 13060 KiB
killer5.txt AC 192 ms 13124 KiB
killer6.txt AC 194 ms 13184 KiB
killer7.txt AC 195 ms 13044 KiB
killer8.txt AC 192 ms 13120 KiB
killer9.txt AC 196 ms 13532 KiB
large_random0.txt AC 64 ms 7940 KiB
large_random1.txt AC 52 ms 5828 KiB
large_random2.txt AC 62 ms 7912 KiB
large_random3.txt AC 175 ms 13096 KiB
large_random4.txt AC 86 ms 8096 KiB
large_random5.txt AC 129 ms 12520 KiB
large_random6.txt AC 96 ms 12572 KiB
large_random7.txt AC 73 ms 8084 KiB
large_random8.txt AC 84 ms 8176 KiB
large_random9.txt AC 126 ms 12780 KiB
maximum0.txt AC 134 ms 13044 KiB
maximum_random0.txt AC 188 ms 13060 KiB
maximum_random1.txt AC 187 ms 13124 KiB
maximum_random2.txt AC 151 ms 13540 KiB
maximum_random3.txt AC 166 ms 13144 KiB
maximum_random4.txt AC 154 ms 13192 KiB
maximum_random5.txt AC 150 ms 13480 KiB
maximum_random6.txt AC 146 ms 13472 KiB
maximum_random7.txt AC 148 ms 13532 KiB
maximum_random8.txt AC 145 ms 13124 KiB
maximum_random9.txt AC 149 ms 13472 KiB
minimum0.txt AC 2 ms 3420 KiB
small_random0.txt AC 2 ms 3412 KiB
small_random1.txt AC 6 ms 3488 KiB
small_random2.txt AC 3 ms 3524 KiB
small_random3.txt AC 2 ms 3600 KiB
small_random4.txt AC 4 ms 3516 KiB