Submission #1004780

#TimeUsernameProblemLanguageResultExecution timeMemory
1004780codexistentJakarta Skyscrapers (APIO15_skyscraper)C++14
22 / 100
2 ms1368 KiB
#include <iostream> #include <vector> #include <set> using namespace std; #define FOR(i, a, b) for(long long i = a; i <= b; i++) #define MAXN 30005 long long n, m, t[MAXN], s, e; vector<long long> p[MAXN]; set<long long> a; int main(){ cin >> n >> m; FOR(i, 0, n - 1) t[i] = -1; FOR(i, 0, m - 1){ int b, pi; cin >> b >> pi; if(i == 0) s = b, t[b] = 0; if(i == 1) e = b; p[b].push_back(pi); } FOR(i, 0, n - 1) if(i != s) a.insert(i); long long c = s; pair<long long, long long> nx = make_pair(-1, -1); while(c != -1){ for(long long i : a){ for(long long j : p[c]){ if(abs(i - c) % j == 0){ t[i] = (t[i] == -1) ? (t[c] + abs(i - c) / j) : min(t[i], t[c] + abs(i - c) / j); } } if(nx.first == -1 || (t[i] != -1 && nx.first > t[i])){ nx.first = t[i]; nx.second = i; } } c = nx.second; a.erase(nx.second); nx.first = nx.second = -1; } cout << t[e] << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...