Submission #1310984

#TimeUsernameProblemLanguageResultExecution timeMemory
1310984ttparin_Jakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
1095 ms4876 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int b[60010]; int p[60010]; int dp[60010]; priority_queue<pair<int,int>> pq; vector<int> v[60010]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,m; cin>>m>>n; for(int i=1;i<=n;i++){ cin>>b[i]>>p[i]; v[b[i]].push_back(i); } for(int i=1;i<=n+m;i++){ dp[i]=LLONG_MAX; } dp[1]=0; pq.push({0,1}); while(pq.empty()==0){ int w=-pq.top().first; int x=pq.top().second; if(x==2) break; if(w!=dp[x]){ pq.pop(); continue; } pq.pop(); if(x>n){ for(auto g:v[x-n-1]){ if(dp[g]>w){ dp[g]=w; pq.push({-dp[g],g}); } } } else{ for(int i=0;i<m;i++){ if((i-b[x])%p[x]==0){ if(dp[i+n+1]>abs(i-b[x])/p[x]+w){ dp[i+n+1]=abs(i-b[x])/p[x]+w; pq.push({-dp[i+n+1],i+n+1}); } } } } } if(dp[2]==LLONG_MAX){ cout<<"-1"; return 0; } cout<<dp[2]; 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...