提出 #60157467
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
constexpr int L = 18, N = 1 << L, C = 1e9 + 1;
using plin = vector<array<int64_t, 2>>;
array<int, 2> lr[N];
pair<int, plin> solve(int l, int r) {
plin res;
if (r == l + 1) {
res.push_back({0, lr[l][0]});
if (lr[l][0] != lr[l][1]) res.push_back({lr[l][0], 0});
if (C != lr[l][1]) res.push_back({lr[l][1], 0});
res.push_back({C, 0});
return {lr[l][1], res};
}
auto [r0, p0] = solve(l, (l + r) / 2);
auto [r1, p1] = solve((l + r) / 2, r);
int i = 0, j = 0;
while (i < p0.size() - 1 || j < p1.size() - 1) {
if (p0[i][0] < p1[j][0]) {
res.push_back({p0[i][0], p0[i][1] + p1[j - 1][1] + (p1[j][1] - p1[j - 1][1]) / (p1[j][0] - p1[j - 1][0]) * (p0[i][0] - p1[j - 1][0])});
++i;
} else if (p0[i][0] > p1[j][0]) {
res.push_back({p1[j][0], p0[i - 1][1] + p1[j][1] + (p0[i][1] - p0[i - 1][1]) / (p0[i][0] - p0[i - 1][0]) * (p1[j][0] - p0[i - 1][0])});
++j;
} else {
res.push_back({p0[i][0], p0[i++][1] + p1[j++][1]});
}
}
res.push_back({p0[i][0], p0[i++][1] + p1[j++][1]});
for (auto mi = res[0][1]; auto& [k, v]: res) v = mi = min(v + max(k - r0, {}) + max(k - r1, {}), mi);
return {max(r0, r1), res};
}
int main() {
cin.tie(0)->sync_with_stdio(0);
int n; cin >> n;
for (int i = 0; i < 1 << n; ++i) cin >> lr[i][0] >> lr[i][1];
cout << solve(0, 1 << n).second.back()[1];
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | A - Schedule Optimization |
| ユーザ | MaxPlus |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 900 |
| コード長 | 1455 Byte |
| 結果 | AC |
| 実行時間 | 179 ms |
| メモリ | 37940 KiB |
コンパイルエラー
Main.cpp: In function ‘std::pair<int, std::vector<std::array<long int, 2> > > solve(int, int)’:
Main.cpp:23:12: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::array<long int, 2> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
23 | while (i < p0.size() - 1 || j < p1.size() - 1) {
| ~~^~~~~~~~~~~~~~~
Main.cpp:23:33: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::array<long int, 2> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
23 | while (i < p0.size() - 1 || j < p1.size() - 1) {
| ~~^~~~~~~~~~~~~~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 900 / 900 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_srand_00.txt, 01_srand_01.txt, 01_srand_02.txt, 01_srand_03.txt, 01_srand_04.txt, 01_srand_05.txt, 01_srand_06.txt, 01_srand_07.txt, 01_srand_08.txt, 01_srand_09.txt, 02_lrand_00.txt, 02_lrand_01.txt, 02_lrand_02.txt, 02_lrand_03.txt, 02_lrand_04.txt, 02_lrand_05.txt, 02_lrand_06.txt, 02_lrand_07.txt, 02_lrand_08.txt, 02_lrand_09.txt, 02_lrand_10.txt, 02_lrand_11.txt, 02_lrand_12.txt, 02_lrand_13.txt, 02_lrand_14.txt, 02_lrand_15.txt, 02_lrand_16.txt, 02_lrand_17.txt, 02_lrand_18.txt, 02_lrand_19.txt, 03_short_00.txt, 03_short_01.txt, 03_short_02.txt, 03_short_03.txt, 03_short_04.txt, 03_short_05.txt, 03_short_06.txt, 03_short_07.txt, 04_hand_00.txt, 04_hand_01.txt, 04_hand_02.txt, 04_hand_03.txt, 04_hand_04.txt, 04_hand_05.txt, 04_hand_06.txt, 04_hand_07.txt, 05_same_00.txt, 05_same_01.txt, 05_same_02.txt, 05_same_03.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3540 KiB |
| 00_sample_01.txt | AC | 1 ms | 3484 KiB |
| 00_sample_02.txt | AC | 1 ms | 3332 KiB |
| 01_srand_00.txt | AC | 1 ms | 3328 KiB |
| 01_srand_01.txt | AC | 1 ms | 3456 KiB |
| 01_srand_02.txt | AC | 1 ms | 3400 KiB |
| 01_srand_03.txt | AC | 1 ms | 3392 KiB |
| 01_srand_04.txt | AC | 1 ms | 3472 KiB |
| 01_srand_05.txt | AC | 1 ms | 3476 KiB |
| 01_srand_06.txt | AC | 1 ms | 3480 KiB |
| 01_srand_07.txt | AC | 1 ms | 3472 KiB |
| 01_srand_08.txt | AC | 1 ms | 3444 KiB |
| 01_srand_09.txt | AC | 1 ms | 3444 KiB |
| 02_lrand_00.txt | AC | 179 ms | 29860 KiB |
| 02_lrand_01.txt | AC | 178 ms | 29864 KiB |
| 02_lrand_02.txt | AC | 176 ms | 29744 KiB |
| 02_lrand_03.txt | AC | 178 ms | 37740 KiB |
| 02_lrand_04.txt | AC | 179 ms | 37772 KiB |
| 02_lrand_05.txt | AC | 173 ms | 34340 KiB |
| 02_lrand_06.txt | AC | 178 ms | 37812 KiB |
| 02_lrand_07.txt | AC | 173 ms | 33644 KiB |
| 02_lrand_08.txt | AC | 174 ms | 34392 KiB |
| 02_lrand_09.txt | AC | 179 ms | 29832 KiB |
| 02_lrand_10.txt | AC | 83 ms | 18268 KiB |
| 02_lrand_11.txt | AC | 84 ms | 19220 KiB |
| 02_lrand_12.txt | AC | 85 ms | 19360 KiB |
| 02_lrand_13.txt | AC | 84 ms | 18800 KiB |
| 02_lrand_14.txt | AC | 87 ms | 16532 KiB |
| 02_lrand_15.txt | AC | 84 ms | 18772 KiB |
| 02_lrand_16.txt | AC | 84 ms | 19820 KiB |
| 02_lrand_17.txt | AC | 84 ms | 17848 KiB |
| 02_lrand_18.txt | AC | 84 ms | 19816 KiB |
| 02_lrand_19.txt | AC | 85 ms | 22992 KiB |
| 03_short_00.txt | AC | 57 ms | 11812 KiB |
| 03_short_01.txt | AC | 139 ms | 28100 KiB |
| 03_short_02.txt | AC | 150 ms | 33888 KiB |
| 03_short_03.txt | AC | 150 ms | 34892 KiB |
| 03_short_04.txt | AC | 76 ms | 19032 KiB |
| 03_short_05.txt | AC | 38 ms | 12000 KiB |
| 03_short_06.txt | AC | 156 ms | 34504 KiB |
| 03_short_07.txt | AC | 38 ms | 11896 KiB |
| 04_hand_00.txt | AC | 57 ms | 5496 KiB |
| 04_hand_01.txt | AC | 29 ms | 4452 KiB |
| 04_hand_02.txt | AC | 118 ms | 23472 KiB |
| 04_hand_03.txt | AC | 117 ms | 23448 KiB |
| 04_hand_04.txt | AC | 117 ms | 23480 KiB |
| 04_hand_05.txt | AC | 159 ms | 29884 KiB |
| 04_hand_06.txt | AC | 161 ms | 37940 KiB |
| 04_hand_07.txt | AC | 151 ms | 36728 KiB |
| 05_same_00.txt | AC | 1 ms | 3452 KiB |
| 05_same_01.txt | AC | 1 ms | 3476 KiB |
| 05_same_02.txt | AC | 2 ms | 3460 KiB |
| 05_same_03.txt | AC | 62 ms | 5592 KiB |