Submission #45732

#TimeUsernameProblemLanguageResultExecution timeMemory
45732mirbek01Jakarta Skyscrapers (APIO15_skyscraper)C++17
10 / 100
19 ms16388 KiB
# include <bits/stdc++.h> using namespace std; const int N = 2000; int n, m, b[N], p[N], d[N][N], dis[N]; vector < pair <int, int> > g[N]; int main(){ cin >> n >> m; for(int i = 0; i < N; i ++){ dis[i] = 1e9; for(int j = 0; j < N; j ++) d[i][j] = 1e9; } if(n > N || m > N) return 0; for(int i = 1; i <= m; i ++){ cin >> b[i] >> p[i]; d[i][b[i]] = 0; for(int j = b[i]; j + p[i] < n; j += p[i]) d[i][j + p[i]] = d[i][j] + 1; for(int j = b[i]; j - p[i] >= 0; j -= p[i]) d[i][j - p[i]] = d[i][j] + 1; } for(int i = 1; i <= m; i ++){ for(int j = 1; j <= m; j ++){ if(j == i) continue; if(d[i][b[j]] != 1e9){ g[i].push_back({d[i][b[j]], j}); } } } set < pair <int, int> > st; dis[1] = 0; st.insert({-1e9, 1}); while(!st.empty()){ int v = st.begin()->second; st.erase(st.begin()); for(int i = 0; i < g[v].size(); i ++){ int to = g[v][i].second, len = g[v][i].first; if(dis[to] > dis[v] + len){ st.erase({dis[to], to}); dis[to] = dis[v] + len; st.insert({dis[to], to}); } } } if(dis[2] == 1e9) cout << -1 << endl; else cout << dis[2] << endl; } /** 5 3 0 2 1 1 4 1 **/

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:46:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int i = 0; i < g[v].size(); i ++){
                            ~~^~~~~~~~~~~~~
#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...