提出 #65380696


ソースコード 拡げる

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
template <typename T>
using vc = vector<T>;

#define FOR1(a) for (ll _ = 0; _ < ll(a); ++_)
#define FOR2(i, a) for (ll i = 0; i < ll(a); ++i)
#define FOR3(i, a, b) for (ll i = a; i < ll(b); ++i)
#define FOR1_R(a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR2_R(i, a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR3_R(i, a, b) for (ll i = (b)-1; i >= ll(a); --i)
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload3(__VA_ARGS__, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) overload3(__VA_ARGS__, FOR3_R, FOR2_R, FOR1_R)(__VA_ARGS__)

// solution 1. SegTree.

void solve() {
  ll N = 1 << 22;
  vc<int> dat(N + N);
  vc<bool> exist(N);
  auto upd = [&](int i) -> void { dat[i] = dat[2 * i] + dat[2 * i + 1]; };
  auto rm_single = [&](int i) -> void {
    exist[i] = 0;
    i += N;
    dat[i] = 0;
    while (i > 1) i /= 2, upd(i);
  };
  auto rm_mul = [&](int a) -> void {
    if (a >= N || !exist[a]) return;
    for (int i = a; i < N; i += a) {
      if (exist[i]) rm_single(i);
    }
  };
  auto find = [&](int k) -> int {
    // (1+k)-th element. (配列の [k]と同じ)
    auto rec = [&](auto& rec, int idx, int l, int r) -> int {
      if (r - l == 1) return l;
      int m = (l + r) / 2;
      int a = 2 * idx + 0, b = 2 * idx + 1;
      if (k < dat[a]) return rec(rec, a, l, m);
      k -= dat[a];
      return rec(rec, b, m, r);
    };
    return rec(rec, 1, 0, N);
  };

  // initialize
  FOR(i, 1, N) dat[N + i] = 1, exist[i] = 1;
  FOR_R(i, 1, N) upd(i);

  ll Q;
  cin >> Q;
  FOR(Q) {
    int a, b;
    cin >> a >> b;
    rm_mul(a);
    int ans = find(b - 1);
    cout << ans << "\n";
  }
}

signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  solve();
}

提出情報

提出日時
問題 C - Removal of Multiples
ユーザ maspy
言語 C++ 20 (gcc 12.2)
得点 600
コード長 1844 Byte
結果 AC
実行時間 417 ms
メモリ 36356 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 1
AC × 40
セット名 テストケース
Sample 01_sample_01.txt
All 01_sample_01.txt, 02_small_AB_01.txt, 02_small_AB_02.txt, 02_small_AB_03.txt, 02_small_AB_04.txt, 02_small_AB_05.txt, 03_rand_1_01.txt, 03_rand_1_02.txt, 03_rand_1_03.txt, 03_rand_1_04.txt, 03_rand_1_05.txt, 04_rand_2_01.txt, 04_rand_2_02.txt, 04_rand_2_03.txt, 04_rand_2_04.txt, 04_rand_2_05.txt, 05_rand_3_01.txt, 05_rand_3_02.txt, 05_rand_3_03.txt, 05_rand_3_04.txt, 05_rand_3_05.txt, 06_rand_4_01.txt, 06_rand_4_02.txt, 06_rand_4_03.txt, 06_rand_4_04.txt, 06_rand_4_05.txt, 06_rand_4_06.txt, 06_rand_4_07.txt, 06_rand_4_08.txt, 06_rand_4_09.txt, 06_rand_4_10.txt, 06_rand_4_11.txt, 06_rand_4_12.txt, 06_rand_4_13.txt, 06_rand_4_14.txt, 06_rand_4_15.txt, 06_rand_4_16.txt, 07_max_ans_01.txt, 07_max_ans_02.txt, 07_max_ans_03.txt
ケース名 結果 実行時間 メモリ
01_sample_01.txt AC 67 ms 36356 KiB
02_small_AB_01.txt AC 188 ms 36248 KiB
02_small_AB_02.txt AC 189 ms 36216 KiB
02_small_AB_03.txt AC 172 ms 36184 KiB
02_small_AB_04.txt AC 179 ms 36284 KiB
02_small_AB_05.txt AC 187 ms 36200 KiB
03_rand_1_01.txt AC 49 ms 36208 KiB
03_rand_1_02.txt AC 50 ms 36356 KiB
03_rand_1_03.txt AC 49 ms 36212 KiB
03_rand_1_04.txt AC 49 ms 36252 KiB
03_rand_1_05.txt AC 49 ms 36248 KiB
04_rand_2_01.txt AC 167 ms 36296 KiB
04_rand_2_02.txt AC 169 ms 36192 KiB
04_rand_2_03.txt AC 166 ms 36256 KiB
04_rand_2_04.txt AC 168 ms 36256 KiB
04_rand_2_05.txt AC 182 ms 36280 KiB
05_rand_3_01.txt AC 134 ms 36216 KiB
05_rand_3_02.txt AC 138 ms 36352 KiB
05_rand_3_03.txt AC 135 ms 36292 KiB
05_rand_3_04.txt AC 136 ms 36280 KiB
05_rand_3_05.txt AC 136 ms 36280 KiB
06_rand_4_01.txt AC 194 ms 36296 KiB
06_rand_4_02.txt AC 219 ms 36188 KiB
06_rand_4_03.txt AC 350 ms 36212 KiB
06_rand_4_04.txt AC 361 ms 36280 KiB
06_rand_4_05.txt AC 282 ms 36160 KiB
06_rand_4_06.txt AC 277 ms 36260 KiB
06_rand_4_07.txt AC 251 ms 36212 KiB
06_rand_4_08.txt AC 279 ms 36320 KiB
06_rand_4_09.txt AC 196 ms 36352 KiB
06_rand_4_10.txt AC 203 ms 36276 KiB
06_rand_4_11.txt AC 417 ms 36192 KiB
06_rand_4_12.txt AC 410 ms 36200 KiB
06_rand_4_13.txt AC 286 ms 36196 KiB
06_rand_4_14.txt AC 309 ms 36348 KiB
06_rand_4_15.txt AC 311 ms 36276 KiB
06_rand_4_16.txt AC 342 ms 36248 KiB
07_max_ans_01.txt AC 186 ms 36188 KiB
07_max_ans_02.txt AC 347 ms 36196 KiB
07_max_ans_03.txt AC 269 ms 36196 KiB