제출 #905704

#제출 시각아이디문제언어결과실행 시간메모리
905704Muhammad_AneeqJakarta Skyscrapers (APIO15_skyscraper)C++17
100 / 100
560 ms5044 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <queue> #include <vector> #include <set> using namespace std; void solve() { int n,m; cin>>n>>m; pair<int,int>a[m]; set<int>lo[n]; for (auto& i:a) { cin>>i.first>>i.second; lo[i.first].insert(i.second); } int dp[n]={}; for (int i=0;i<n;i++) dp[i]=1e9+10; dp[a[0].first]=0; set<pair<int,int>>pq; pq.insert({0,a[0].first}); bool vis[n]={}; while (pq.size()) { int loc=(*begin(pq)).second; pq.erase(*begin(pq)); if (vis[loc]) continue; vis[loc]=1; if (loc==a[1].first) { cout<<(dp[a[1].first]!=1e9+10?dp[a[1].first]:-1); return; } for (auto j:lo[loc]) { int z=0; for (int k=loc-j;k>=0;k-=j) { z++; if (dp[k]>dp[loc]+z) { pq.erase({dp[k],k}); dp[k]=dp[loc]+z; pq.insert({dp[k],k}); } } z=0; for (int k=loc+j;k<n;k+=j) { z++; if (dp[k]>dp[loc]+z) { pq.erase({dp[k],k}); dp[k]=dp[loc]+z; pq.insert({dp[k],k}); } } } } cout<<(dp[a[1].first]!=1e9+10?dp[a[1].first]:-1); } signed main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); solve(); }
#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...