Submission #549044

# Submission time Handle Problem Language Result Execution time Memory
549044 2022-04-15T03:04:21 Z czhang2718 Jakarta Skyscrapers (APIO15_skyscraper) C++17
10 / 100
1 ms 1036 KB
#include "bits/stdc++.h"
using namespace std;

typedef pair<int,int> pii;
#define f first
#define s second
#define nl '\n'

const int N=30001;
const int B=175;
int n,m;
vector<int> v[N];
int P[N], x[N];
int dist[N][B];

int main(){
  cin.tie(0)->sync_with_stdio(0);

  cin >> n >> m;
  for(int i=0; i<m; i++){
    cin >> x[i] >> P[i];
    v[x[i]].push_back(i);
  }
  for(int i=0; i<n; i++){
    for(int j=0; j<B; j++) dist[i][j]=1e9;
  }
  dist[0][0]=0;

  set<pair<int, pii>> s;
  s.insert({0, {0, 0}});

  auto go=[&](int i, int d, int b){
    // cout << "go " << i << " " << d << " " << b << nl;
    for(int c:{i+b, i-b}){
      if(c<0 || c>=n) continue;
      // cout << "-> " << c << " " << b << nl;
      if(d+1<dist[c][b]){
        if(dist[c][b]!=1e9) s.erase({dist[c][b], {c, b}});
        dist[c][b]=d+1;
        s.insert({d+1, {c, b}});
      }
      if(d+1<dist[c][0]){
        if(dist[c][0]!=1e9) s.erase({dist[c][0], {c, 0}});
        dist[c][0]=d+1;
        s.insert({d+1, {c, 0}});
      }
    }
  };

  while(!s.empty()){
    auto p=*s.begin(); s.erase(s.begin());
    int d=p.f, a=p.s.f, b=p.s.s;
    // cout << a << " " << b << nl;
    if(a==x[1]){
      cout << d; return 0;
    }
    if(!b){
      for(int i:v[a]){
        if(P[i]>=B){
          for(int j=a%P[i]; j<n; j+=P[i]){
            if(d+abs(j-a)/P[i]<dist[j][0]){
              if(dist[j][0]!=1e9) s.erase({dist[j][0], {j, 0}});
              dist[j][0]=d+abs(j-a)/P[i];
              s.insert({dist[j][0], {j, 0}});
            }
          }
        }
        else{
          go(a, d, P[i]);
        }
      }
    }
    else{
      go(a, d, b);
    }
  }
  cout << -1;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 1 ms 980 KB Output is correct
3 Correct 1 ms 1036 KB Output is correct
4 Correct 1 ms 980 KB Output is correct
5 Correct 1 ms 980 KB Output is correct
6 Correct 1 ms 1032 KB Output is correct
7 Correct 1 ms 980 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 1 ms 1028 KB Output is correct
3 Correct 1 ms 1032 KB Output is correct
4 Correct 1 ms 980 KB Output is correct
5 Correct 1 ms 980 KB Output is correct
6 Correct 1 ms 980 KB Output is correct
7 Correct 1 ms 980 KB Output is correct
8 Incorrect 1 ms 980 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 1 ms 980 KB Output is correct
3 Correct 1 ms 980 KB Output is correct
4 Correct 1 ms 1036 KB Output is correct
5 Correct 1 ms 980 KB Output is correct
6 Correct 1 ms 980 KB Output is correct
7 Correct 1 ms 980 KB Output is correct
8 Incorrect 1 ms 980 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 1 ms 980 KB Output is correct
3 Correct 1 ms 980 KB Output is correct
4 Correct 1 ms 1028 KB Output is correct
5 Correct 1 ms 980 KB Output is correct
6 Correct 1 ms 980 KB Output is correct
7 Correct 1 ms 980 KB Output is correct
8 Incorrect 1 ms 980 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 980 KB Output is correct
2 Correct 1 ms 980 KB Output is correct
3 Correct 1 ms 980 KB Output is correct
4 Correct 1 ms 980 KB Output is correct
5 Correct 1 ms 980 KB Output is correct
6 Correct 1 ms 980 KB Output is correct
7 Correct 1 ms 980 KB Output is correct
8 Incorrect 1 ms 980 KB Output isn't correct
9 Halted 0 ms 0 KB -