Submission #31537793


Source Code Expand

#include <bits/stdc++.h>
#define sz(c) int(c.size())
#define rep(i, a, b) for (int i = a; i < (b); ++i)
#define per(i, a, b) for (int i = (b)-1; i >= (a); --i)
using namespace std;
using ll = long long;

#ifdef LOCAL
#include <local/debug.h>
#else
#define debug(...) (void)0
#endif

int main() {
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);

  int n;
  cin >> n;
  vector<int> a(n), b(n);
  rep(i, 0, n) cin >> a[i];
  rep(i, 0, n) cin >> b[i];

  map<int, int> s;
  array<int, 4> cnt{};

  auto add = [&](int x, int y) {
    int pre = s[x];
    int cur = pre | y;
    if (cur != pre) {
      cnt[pre]--;
      cnt[cur]++;
      s[x] = cur;
    }
  };

  int p = 0, q = 0;
  add(a[p++], 1);
  add(b[q++], 2);

  vector<pair<pair<int, int>, pair<int, int>>> seg;
  while (true) {
    if (cnt[1] + cnt[2] == 0) {
      int p1 = p, q1 = q;
      while (p < n && s.count(a[p]))
        p++;
      while (q < n && s.count(b[q]))
        q++;
      seg.emplace_back(make_pair(p1, p), make_pair(q1, q));
      if (p == n && q == n)
        break;
      if (p < n)
        add(a[p++], 1);
      if (q < n)
        add(b[q++], 2);
      continue;
    }

    if (cnt[1] != 0) {
      if (q == n)
        break;
      add(b[q++], 2);
      continue;
    }

    assert(cnt[2] != 0);
    if (p == n)
      break;
    add(a[p++], 1);
  }

  using pii = pair<int, int>;
  map<int, pair<pii, pii>> f;
  for (auto it : seg)
    f[it.first.first] = it;

  int Q;
  cin >> Q;
  while (Q--) {
    int x, y;
    cin >> x >> y;

    auto check = [&]() {
      auto it = f.upper_bound(x);
      if (it == f.begin())
        return false;
      it--;
      auto [p1, p2] = it->second;
      assert(p1.first <= x);
      return x <= p1.second && p2.first <= y && y <= p2.second;
    };

    cout << (check() ? "Yes" : "No") << '\n';
  }
}

Submission Info

Submission Time
Task E - Prefix Equality
User ami
Language C++ (GCC 9.2.1)
Score 500
Code Size 1920 Byte
Status AC
Exec Time 220 ms
Memory 14220 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 1
AC × 34
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_one_00.txt, 01_one_01.txt, 02_smallN_00.txt, 02_smallN_01.txt, 03_rnd_00.txt, 03_rnd_01.txt, 04_normal_00.txt, 04_normal_01.txt, 04_normal_02.txt, 04_normal_03.txt, 04_normal_04.txt, 04_normal_05.txt, 05_largexy_00.txt, 05_largexy_01.txt, 05_largexy_02.txt, 05_largexy_03.txt, 05_largexy_04.txt, 05_largexy_05.txt, 06_rev_00.txt, 07_distinct_00.txt, 08_sumhack_00.txt, 08_sumhack_01.txt, 08_sumhack_02.txt, 09_smallval_00.txt, 09_smallval_01.txt, 09_smallval_02.txt, 09_smallval_03.txt, 09_smallval_04.txt, 09_smallval_05.txt, 09_smallval_06.txt, 09_smallval_07.txt, 09_smallval_08.txt, 09_smallval_09.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 11 ms 3520 KiB
01_one_00.txt AC 2 ms 3488 KiB
01_one_01.txt AC 2 ms 3548 KiB
02_smallN_00.txt AC 41 ms 3576 KiB
02_smallN_01.txt AC 37 ms 3524 KiB
03_rnd_00.txt AC 135 ms 10800 KiB
03_rnd_01.txt AC 135 ms 10472 KiB
04_normal_00.txt AC 130 ms 5948 KiB
04_normal_01.txt AC 134 ms 5880 KiB
04_normal_02.txt AC 99 ms 4672 KiB
04_normal_03.txt AC 97 ms 4592 KiB
04_normal_04.txt AC 88 ms 4668 KiB
04_normal_05.txt AC 88 ms 4720 KiB
05_largexy_00.txt AC 130 ms 5804 KiB
05_largexy_01.txt AC 129 ms 5884 KiB
05_largexy_02.txt AC 98 ms 4672 KiB
05_largexy_03.txt AC 93 ms 4628 KiB
05_largexy_04.txt AC 87 ms 4684 KiB
05_largexy_05.txt AC 86 ms 4728 KiB
06_rev_00.txt AC 220 ms 14220 KiB
07_distinct_00.txt AC 155 ms 14220 KiB
08_sumhack_00.txt AC 69 ms 4688 KiB
08_sumhack_01.txt AC 68 ms 4672 KiB
08_sumhack_02.txt AC 63 ms 4600 KiB
09_smallval_00.txt AC 82 ms 4704 KiB
09_smallval_01.txt AC 80 ms 4668 KiB
09_smallval_02.txt AC 79 ms 4672 KiB
09_smallval_03.txt AC 78 ms 4732 KiB
09_smallval_04.txt AC 78 ms 4628 KiB
09_smallval_05.txt AC 79 ms 4680 KiB
09_smallval_06.txt AC 80 ms 4664 KiB
09_smallval_07.txt AC 79 ms 4628 KiB
09_smallval_08.txt AC 78 ms 4628 KiB
09_smallval_09.txt AC 80 ms 4692 KiB