提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |