# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
32940 | minimario | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 3 ms | 5892 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>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define f first
#define s second
const int MAX = 30005;
const int SQRT = 90;
const int INF = 1000000000;
int p[MAX], len[MAX]; // position, length
vector<pair<int, int> > g[MAX];
int dist[MAX];
int targ = 0;
priority_queue<pair<int, int> > pq;
void dijk(int i) {
dist[i] = 0;
pq.push({0, i});
while (!pq.empty()) {
auto top = pq.top(); pq.pop();
int d = -top.f;
int loc = top.s;
if (loc == targ) { return; }
if (d > dist[loc]) {
continue;
}
for (auto i : g[loc]) {
int d_new = (d + i.s);
if (d_new < dist[i.f]) {
dist[i.f] = d_new;
pq.push({-d_new, i.f});
}
}
}
}
map<int, bool> l[MAX], r[MAX];
int main() {
// freopen("a.in", "r", stdin);
// freopen("a.out", "w", stdout);
int n, m; scanf("%d %d", &n, &m);
for (int i=0; i<m; i++) {
scanf("%d %d", &p[i], &len[i]);
l[p[i]][len[i]] = true;
r[p[i]][len[i]] = true;
if (!r[p[i]][len[i]]) {
for (int j=p[i]+len[i]; j<n; j+=len[i]) {
r[j][len[i]] = true;
g[p[i]].push_back({j, (j-p[i])/len[i]});
}
}
if (!l[p[i]][len[i]]) {
for (int j=p[i]-len[i]; j>=0; j-=len[i]) {
l[j][len[i]] = true;
g[p[i]].push_back({j, (p[i]-j)/len[i]});
}
}
}
for (int i=0; i<MAX; i++) { dist[i] = INF; }
targ = p[1];
dijk(p[0]);
if (dist[p[1]] == INF) { printf("%d\n", -1); }
else { printf("%d\n", dist[p[1]]); }
}
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... |