Submission #826654

# Submission time Handle Problem Language Result Execution time Memory
826654 2023-08-15T19:05:35 Z cig32 Jakarta Skyscrapers (APIO15_skyscraper) C++17
57 / 100
395 ms 262144 KB
#include "bits/stdc++.h"
using namespace std;
#define double long double
const int MAXN = 15000000;
const int MAXN2 = 10400000;
const int MOD = 1e9 + 7;
mt19937_64 rng((int)std::chrono::steady_clock::now().time_since_epoch().count());
int rnd(int x, int y) {
  int u = uniform_int_distribution<int>(x, y)(rng); return u;
}
int bm(int b, int p) {
  if(p==0) return 1 % MOD;
  int r = bm(b, p >> 1);
  if(p&1) return (((r*r) % MOD) * b) % MOD;
  return (r*r) % MOD;
}
int inv(int b) { 
  return bm(b, MOD-2);
}
int fastlog(int x) {
  return (x == 0 ? -1 : 64 - __builtin_clzll(x) - 1);
}
void printcase(int i) { cout << "Case #" << i << ": "; }
int n, m, s, nxt;
pair<int, int> cmds[MAXN];
int adj[MAXN];
int id;
int ps[MAXN2];
int cur[MAXN2];
int dq[MAXN];
void add_command(int u, int v) {
  cmds[id] = {u,v};
  ps[u]++;
  id++;
}
void construct(int b, int p) { 
  for(int j=b%p; j<n; j+=p) {
    if(j+p < n) add_command(nxt + j/p, (nxt + j/p + 1) * 2 + 1); //adj[nxt + j/p].push_back((nxt + j/p + 1) * 2 + 1);
    if(j-p >= 0) add_command(nxt + j/p, (nxt + j/p - 1) * 2 + 1); //adj[nxt + j/p].push_back((nxt + j/p - 1) * 2 + 1);
    add_command(nxt + j/p, j * 2); //adj[nxt + j/p].push_back(j * 2 + 0);
  }
  add_command(b, (nxt + b/p) * 2); //adj[b].push_back((nxt + b/p) * 2 + 0);
  for(int j=b%p; j<n; j+=p) {
    nxt++;
  }
}
void solve(int tc) {
  cin >> n >> m;
  s = ceil(sqrt(n));
  nxt = n;
  int st, en;
  unordered_map<int, int> bruh[30001];
  for(int i=0; i<m; i++) {
    int b, p;
    cin >> b >> p;
    if(i == 0) st = b;
    if(i == 1) en = b;
    if(!bruh[p].count(b%p)) {
      bruh[p][b%p] = nxt;
      construct(b, p);
    }
    else {
      add_command(b, (bruh[p][b%p] + b/p) * 2);
    }
  }
  for(int i=1; i<MAXN2; i++) ps[i]+=ps[i-1];
  for(int i=0; i<MAXN2; i++) cur[i]=ps[i]-1;
  for(int i=0; i<id; i++) {
    int u = cmds[i].first, v = cmds[i].second;
    adj[cur[u]] = v;
    cur[u]--;
  }
  int k = nxt;
  int dist[k];
  bitset<MAXN2> vis;
  //bool vis[k];
  for(int i=0; i<k; i++) dist[i] = 1e9, vis[i] = 0;
  dist[st] = 0;
  int head=0, tail=1;
  dq[0]=st;
  while(head!=tail) {
    int f = dq[head];
    head=(head+1)%MAXN;
    if(!vis[f]) {
      vis[f] = 1;
      int l, r;
      if(f==0) l=0, r=ps[0]-1;
      else l=ps[f-1], r=ps[f]-1;
      for(int y=l; y<=r; y++) {
        int x = adj[y];
        if(!vis[x / 2] && dist[x / 2] > dist[f] + (x % 2)) {
          dist[x / 2] = dist[f] + (x % 2);
          if(x % 2 == 0) {
            head=(head+MAXN-1)%MAXN;
            dq[head]=x/2;
          }
          else dq[tail++]=x/2;
        }
      }
    }
  }
  cout<<(dist[en]==1e9?-1:dist[en])<<"\n";
}
int32_t main() {
  ios::sync_with_stdio(0); cin.tie(0);
  int t = 1; //cin >> t;
  for(int i=1; i<=t; i++) solve(i);
}
// 勿忘初衷

Compilation message

skyscraper.cpp: In function 'void solve(int)':
skyscraper.cpp:80:8: warning: 'st' may be used uninitialized in this function [-Wmaybe-uninitialized]
   80 |   dq[0]=st;
      |   ~~~~~^~~
skyscraper.cpp:102:17: warning: 'en' may be used uninitialized in this function [-Wmaybe-uninitialized]
  102 |   cout<<(dist[en]==1e9?-1:dist[en])<<"\n";
      |          ~~~~~~~^
# Verdict Execution time Memory Grader output
1 Correct 59 ms 84556 KB Output is correct
2 Correct 63 ms 84556 KB Output is correct
3 Correct 63 ms 84560 KB Output is correct
4 Correct 62 ms 84600 KB Output is correct
5 Correct 59 ms 84552 KB Output is correct
6 Correct 59 ms 84556 KB Output is correct
7 Correct 61 ms 84668 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 84544 KB Output is correct
2 Correct 59 ms 84648 KB Output is correct
3 Correct 58 ms 84628 KB Output is correct
4 Correct 59 ms 84560 KB Output is correct
5 Correct 59 ms 84576 KB Output is correct
6 Correct 58 ms 84556 KB Output is correct
7 Correct 59 ms 84532 KB Output is correct
8 Correct 59 ms 84584 KB Output is correct
9 Correct 66 ms 84652 KB Output is correct
10 Correct 64 ms 84684 KB Output is correct
11 Correct 58 ms 84812 KB Output is correct
12 Correct 59 ms 84656 KB Output is correct
13 Correct 65 ms 84636 KB Output is correct
14 Correct 60 ms 84864 KB Output is correct
15 Correct 61 ms 84900 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 84576 KB Output is correct
2 Correct 60 ms 84540 KB Output is correct
3 Correct 60 ms 84604 KB Output is correct
4 Correct 60 ms 84592 KB Output is correct
5 Correct 59 ms 84540 KB Output is correct
6 Correct 58 ms 84620 KB Output is correct
7 Correct 59 ms 84588 KB Output is correct
8 Correct 59 ms 84556 KB Output is correct
9 Correct 63 ms 84644 KB Output is correct
10 Correct 59 ms 84652 KB Output is correct
11 Correct 60 ms 84820 KB Output is correct
12 Correct 59 ms 84684 KB Output is correct
13 Correct 59 ms 84596 KB Output is correct
14 Correct 60 ms 84956 KB Output is correct
15 Correct 62 ms 84912 KB Output is correct
16 Correct 60 ms 84792 KB Output is correct
17 Correct 62 ms 85324 KB Output is correct
18 Correct 60 ms 85012 KB Output is correct
19 Correct 60 ms 84808 KB Output is correct
20 Correct 59 ms 84736 KB Output is correct
21 Correct 61 ms 84864 KB Output is correct
22 Correct 59 ms 84872 KB Output is correct
23 Correct 63 ms 85056 KB Output is correct
24 Correct 61 ms 85324 KB Output is correct
25 Correct 61 ms 85032 KB Output is correct
26 Correct 59 ms 85000 KB Output is correct
27 Correct 60 ms 84884 KB Output is correct
28 Correct 62 ms 85620 KB Output is correct
29 Correct 62 ms 87272 KB Output is correct
30 Correct 60 ms 85376 KB Output is correct
31 Correct 61 ms 86020 KB Output is correct
32 Correct 60 ms 85572 KB Output is correct
33 Correct 65 ms 89852 KB Output is correct
34 Correct 65 ms 89796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 84556 KB Output is correct
2 Correct 60 ms 84576 KB Output is correct
3 Correct 64 ms 84628 KB Output is correct
4 Correct 59 ms 84608 KB Output is correct
5 Correct 59 ms 84528 KB Output is correct
6 Correct 59 ms 84528 KB Output is correct
7 Correct 61 ms 84532 KB Output is correct
8 Correct 60 ms 84536 KB Output is correct
9 Correct 62 ms 84608 KB Output is correct
10 Correct 60 ms 84680 KB Output is correct
11 Correct 65 ms 84808 KB Output is correct
12 Correct 59 ms 84656 KB Output is correct
13 Correct 60 ms 84568 KB Output is correct
14 Correct 60 ms 84928 KB Output is correct
15 Correct 61 ms 84860 KB Output is correct
16 Correct 61 ms 84768 KB Output is correct
17 Correct 59 ms 85244 KB Output is correct
18 Correct 60 ms 84952 KB Output is correct
19 Correct 59 ms 84808 KB Output is correct
20 Correct 59 ms 84652 KB Output is correct
21 Correct 59 ms 84868 KB Output is correct
22 Correct 58 ms 84904 KB Output is correct
23 Correct 61 ms 85028 KB Output is correct
24 Correct 61 ms 85288 KB Output is correct
25 Correct 60 ms 85076 KB Output is correct
26 Correct 61 ms 84900 KB Output is correct
27 Correct 61 ms 84972 KB Output is correct
28 Correct 60 ms 85644 KB Output is correct
29 Correct 62 ms 87264 KB Output is correct
30 Correct 60 ms 85348 KB Output is correct
31 Correct 61 ms 86028 KB Output is correct
32 Correct 60 ms 85672 KB Output is correct
33 Correct 66 ms 89784 KB Output is correct
34 Correct 65 ms 89760 KB Output is correct
35 Correct 71 ms 89752 KB Output is correct
36 Correct 63 ms 85612 KB Output is correct
37 Correct 75 ms 92540 KB Output is correct
38 Correct 78 ms 92364 KB Output is correct
39 Correct 77 ms 92388 KB Output is correct
40 Correct 76 ms 92332 KB Output is correct
41 Correct 77 ms 92392 KB Output is correct
42 Correct 62 ms 85244 KB Output is correct
43 Correct 62 ms 85280 KB Output is correct
44 Correct 63 ms 85008 KB Output is correct
45 Correct 95 ms 106060 KB Output is correct
46 Correct 96 ms 106116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 84596 KB Output is correct
2 Correct 58 ms 84556 KB Output is correct
3 Correct 58 ms 84644 KB Output is correct
4 Correct 60 ms 84680 KB Output is correct
5 Correct 58 ms 84560 KB Output is correct
6 Correct 59 ms 84556 KB Output is correct
7 Correct 59 ms 84548 KB Output is correct
8 Correct 59 ms 84552 KB Output is correct
9 Correct 60 ms 84628 KB Output is correct
10 Correct 58 ms 84724 KB Output is correct
11 Correct 61 ms 84784 KB Output is correct
12 Correct 60 ms 84624 KB Output is correct
13 Correct 61 ms 84672 KB Output is correct
14 Correct 60 ms 84964 KB Output is correct
15 Correct 59 ms 84940 KB Output is correct
16 Correct 63 ms 84736 KB Output is correct
17 Correct 61 ms 85328 KB Output is correct
18 Correct 61 ms 84940 KB Output is correct
19 Correct 61 ms 84892 KB Output is correct
20 Correct 61 ms 84684 KB Output is correct
21 Correct 60 ms 84800 KB Output is correct
22 Correct 61 ms 84964 KB Output is correct
23 Correct 60 ms 84980 KB Output is correct
24 Correct 62 ms 85344 KB Output is correct
25 Correct 60 ms 85076 KB Output is correct
26 Correct 62 ms 84944 KB Output is correct
27 Correct 60 ms 84940 KB Output is correct
28 Correct 61 ms 85664 KB Output is correct
29 Correct 64 ms 87240 KB Output is correct
30 Correct 60 ms 85380 KB Output is correct
31 Correct 61 ms 86092 KB Output is correct
32 Correct 61 ms 85644 KB Output is correct
33 Correct 65 ms 89760 KB Output is correct
34 Correct 66 ms 89832 KB Output is correct
35 Correct 70 ms 89804 KB Output is correct
36 Correct 61 ms 85632 KB Output is correct
37 Correct 73 ms 92528 KB Output is correct
38 Correct 75 ms 92444 KB Output is correct
39 Correct 76 ms 92416 KB Output is correct
40 Correct 76 ms 92428 KB Output is correct
41 Correct 76 ms 92392 KB Output is correct
42 Correct 62 ms 85272 KB Output is correct
43 Correct 63 ms 85244 KB Output is correct
44 Correct 63 ms 85052 KB Output is correct
45 Correct 96 ms 106072 KB Output is correct
46 Correct 95 ms 106156 KB Output is correct
47 Correct 115 ms 117076 KB Output is correct
48 Correct 73 ms 95884 KB Output is correct
49 Correct 70 ms 92364 KB Output is correct
50 Correct 67 ms 91900 KB Output is correct
51 Correct 89 ms 100852 KB Output is correct
52 Correct 90 ms 102156 KB Output is correct
53 Correct 73 ms 89652 KB Output is correct
54 Correct 59 ms 85924 KB Output is correct
55 Correct 61 ms 87008 KB Output is correct
56 Correct 64 ms 86376 KB Output is correct
57 Correct 83 ms 103344 KB Output is correct
58 Correct 65 ms 88188 KB Output is correct
59 Correct 83 ms 89284 KB Output is correct
60 Correct 69 ms 90484 KB Output is correct
61 Correct 69 ms 90060 KB Output is correct
62 Correct 92 ms 106824 KB Output is correct
63 Correct 254 ms 183668 KB Output is correct
64 Correct 277 ms 206116 KB Output is correct
65 Correct 395 ms 259084 KB Output is correct
66 Runtime error 206 ms 262144 KB Execution killed with signal 11
67 Halted 0 ms 0 KB -