제출 #1275765

#제출 시각아이디문제언어결과실행 시간메모리
1275765namiousJakarta Skyscrapers (APIO15_skyscraper)C++20
36 / 100
458 ms327680 KiB
#include <bits/stdc++.h> using namespace std; // #define int long long // #define ll long long #define pii pair<int,int> #define pb push_back #define endl '\n' #define fast_io ios_base::sync_with_stdio(0) ,cin.tie(0),cout.tie(0); #pragma GCC optimize("O3,unroll-loops") const int maxn = 3e4+4 , mod = 1e9+7 , inf = 1e9; int n,m; int p[maxn]; int b[maxn]; vector <pii> adj[maxn]; int dis[maxn]; priority_queue <pii , vector<pii> , greater<pii>> pq; int32_t main(){ fast_io cin >> n >> m; for(int i = 0 ; i < n ; i++) dis[i] = inf; for(int i = 0 ; i < m ; i++){ cin >> b[i] >> p[i]; } for(int i = 0 ; i < m ; i++){ for(int j = 0 ; j < n ; j++){ if(j%p[i] == b[i]%p[i]) adj[b[i]].pb({j,abs(j-b[i])/p[i]}); } } dis[b[0]] = 0 , pq.push({0,b[0]}); while(pq.size()){ auto [d,v] = pq.top(); pq.pop(); if(d > dis[v])continue; for(auto [u,w] : adj[v]){ if(dis[v]+w < dis[u]){ dis[u] = dis[v]+w; pq.push({dis[u],u}); } } } if(dis[b[1]] != inf) cout << dis[b[1]] << endl; else cout << -1 << endl; return 0; }
#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...