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