# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
78351 | xiaowuc1 | Jakarta Skyscrapers (APIO15_skyscraper) | C++14 | 4 ms | 1976 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>
/*
unsigned seed1 = std::chrono::system_clock::now().time_since_epoch().count();
mt19937 g1.seed(seed1);
ios_base::sync_with_stdio(false);
cin.tie(NULL);
*/
using namespace std;
const double PI = 2 * acos(0);
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<int, ll> pill;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef vector<vector<ll>> matrix;
int dp[30001];
vector<int> edges[30001];
int q[30001];
int main() {
int m, n;
scanf("%d%d", &m, &n);
for(int i = 0; i < m; i++) {
dp[i] = m+1;
}
int ql = 0;
int qr = 0;
int dest = -1;
for(int i = 0; i < n; i++) {
int loc, jump;
scanf("%d %d", &loc, &jump);
edges[loc].push_back(jump);
if(i == 0) {
q[qr++] = loc;
dp[loc] = 0;
}
else if(i == 1) {
dest = loc;
}
}
int ret = m+1;
while(ql < qr) {
int curr = q[ql++];
for(int out: edges[curr]) {
if(abs(curr-dest)%out == 0) {
ret = min(ret, dp[curr] + abs(curr-dest) / out);
}
if(curr - out >= 0 && dp[curr-out] == m+1) {
dp[curr-out] = dp[curr]+1;
q[qr++] = curr-out;
}
if(dp[curr-out] == dp[curr] + 1) {
edges[curr-out].push_back(out);
}
if(curr + out >= 0 && dp[curr+out] == m+1) {
dp[curr+out] = dp[curr]+1;
q[qr++] = curr+out;
}
if(dp[curr+out] == dp[curr] + 1) {
edges[curr+out].push_back(out);
}
}
}
if(ret == m+1) ret = -1;
printf("%d\n", ret);
}
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... |