# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
328514 | negar_a | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 1099 ms | 8300 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize ("unroll-loops")
using namespace std;
typedef long long ll;
typedef long double ld;
#define pb push_back
#define mp make_pair
#define pii pair <int, int>
#define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define F first
#define S second
const int maxn = 3e5 + 10;
int n, m;
int inf = 1e9;
int b[maxn], p[maxn];
vector <int> adj[maxn];
int dis[maxn];
int main(){
fast_io;
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i ++){
scanf("%d %d", b + i, p + i);
adj[b[i]].pb(i);
}
for(int i = 0; i <= m; i ++){
dis[i] = inf;
}
priority_queue <pii> s;
s.push({0, 0});
while(s.size()){
int x = s.top().S;
int w = s.top().F;
s.pop();
// cout << "x : " << x << endl;
if(dis[x] >= w){
dis[x] = w;
for(int i = b[x]; i <= n; i += p[x]){
int d = abs(i - b[x]);
if(d % p[x] == 0){
for(int u : adj[i]){
if(dis[u] > dis[x] + (d / p[x])){
dis[u] = dis[x] + (d / p[x]);
s.push({dis[u], u});
}
}
}
}
for(int i = b[x]; i >= 0; i -= p[x]){
int d = abs(i - b[x]);
if(d % p[x] == 0){
for(int u : adj[i]){
if(dis[u] > dis[x] + (d / p[x])){
// cout << "ii : " << i << " | " << d << " : " << d / p[x] << endl;
// s.erase({dis[u], u});
dis[u] = dis[x] + (d / p[x]);
s.push({dis[u], u});
}
}
}
}
}
}
if(dis[1] != inf){
printf("%d", dis[1]);
}else{
printf("%d", -1);
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |