답안 #925204

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
925204 2024-02-11T02:56:01 Z awu Passport (JOI23_passport) C++14
54 / 100
2000 ms 71160 KB
#include <bits/extc++.h>
using namespace __gnu_pbds;
using namespace std;

// #define int long long
#define ll long long
// #define double long double
#define all(x) x.begin(), x.end()
#define debug(x) do{auto _x = x; cerr << #x << " = " << _x << endl;} while(0)
#define f first
#define s second
// #define endl '\n'

using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int inf = 1 << 29;
// const ll inf = 1ll << 50;

const int MOD = 1e9 + 7;

signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n; cin >> n;
  int s = 1;
  while(s < n) s *= 2;
  vector<vector<int>> adj(s * 2); // reversed edges
  vector<int> s1, sn;
  for(int i = 0; i < n; i++) {
    int l, r; cin >> l >> r; l--;
    if(l == 0) s1.push_back(i);
    if(r == n) sn.push_back(i);
    auto add = [&](int a, int b) {
      adj[a].push_back(b);
    };
    for(l += s, r += s; l < r; l /= 2, r /= 2) {
      if(l & 1) add(l++, s + i);
      if(r & 1) add(--r, s + i);
    }
  }
  std::priority_queue<pii, vector<pii>, greater<pii>> pq;
  auto dijk = [&](vector<int>& d) {
    while(pq.size()) {
      auto cur = pq.top(); pq.pop();
      if(d[cur.s] <= cur.f) continue;
      d[cur.s] = cur.f;
      for(auto i : adj[cur.s]) {
        pq.push({d[cur.s] + 1, i});
      }
      if(cur.s > 1) pq.push({d[cur.s], cur.s / 2});
    }
  };
  for(auto i : s1) {
    pq.push({0, s + i});
  }
  vector<int> d1(s * 2, inf);
  dijk(d1);
  for(auto i : sn) {
    pq.push({0, s + i});
  }
  vector<int> dn(s * 2, inf);
  dijk(dn);
  vector<int> d(s * 2, inf);
  for(int i = 0; i < n; i++) {
    pq.push({d1[s + i] + dn[s + i], s + i});
  }
  dijk(d);
  int q; cin >> q;
  while(q--) {
    int x; cin >> x; x--;
    cout << (d[s + x] == inf ? -1 : d[s + x] + 1) << endl;
  }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1948 ms 70968 KB Output is correct
5 Correct 373 ms 33888 KB Output is correct
6 Correct 178 ms 36292 KB Output is correct
7 Correct 1064 ms 60112 KB Output is correct
8 Correct 336 ms 46500 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 1 ms 460 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 1 ms 460 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 7 ms 1112 KB Output is correct
17 Correct 4 ms 856 KB Output is correct
18 Correct 8 ms 860 KB Output is correct
19 Correct 8 ms 856 KB Output is correct
20 Correct 2 ms 856 KB Output is correct
21 Correct 3 ms 860 KB Output is correct
22 Correct 3 ms 860 KB Output is correct
23 Correct 6 ms 1116 KB Output is correct
24 Correct 3 ms 860 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 1 ms 460 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 7 ms 1112 KB Output is correct
17 Correct 4 ms 856 KB Output is correct
18 Correct 8 ms 860 KB Output is correct
19 Correct 8 ms 856 KB Output is correct
20 Correct 2 ms 856 KB Output is correct
21 Correct 3 ms 860 KB Output is correct
22 Correct 3 ms 860 KB Output is correct
23 Correct 6 ms 1116 KB Output is correct
24 Correct 3 ms 860 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 0 ms 348 KB Output is correct
27 Correct 10 ms 1132 KB Output is correct
28 Correct 7 ms 860 KB Output is correct
29 Correct 5 ms 1020 KB Output is correct
30 Correct 7 ms 800 KB Output is correct
31 Correct 8 ms 1112 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1948 ms 70968 KB Output is correct
5 Correct 373 ms 33888 KB Output is correct
6 Correct 178 ms 36292 KB Output is correct
7 Correct 1064 ms 60112 KB Output is correct
8 Correct 336 ms 46500 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 344 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 344 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
19 Correct 1 ms 348 KB Output is correct
20 Correct 1 ms 348 KB Output is correct
21 Correct 1 ms 460 KB Output is correct
22 Correct 1 ms 348 KB Output is correct
23 Correct 1 ms 348 KB Output is correct
24 Correct 7 ms 1112 KB Output is correct
25 Correct 4 ms 856 KB Output is correct
26 Correct 8 ms 860 KB Output is correct
27 Correct 8 ms 856 KB Output is correct
28 Correct 2 ms 856 KB Output is correct
29 Correct 3 ms 860 KB Output is correct
30 Correct 3 ms 860 KB Output is correct
31 Correct 6 ms 1116 KB Output is correct
32 Correct 3 ms 860 KB Output is correct
33 Correct 0 ms 348 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 10 ms 1132 KB Output is correct
36 Correct 7 ms 860 KB Output is correct
37 Correct 5 ms 1020 KB Output is correct
38 Correct 7 ms 800 KB Output is correct
39 Correct 8 ms 1112 KB Output is correct
40 Execution timed out 2047 ms 71160 KB Time limit exceeded
41 Halted 0 ms 0 KB -