제출 #1310971

#제출 시각아이디문제언어결과실행 시간메모리
1310971ttparin_Jakarta Skyscrapers (APIO15_skyscraper)C++20
36 / 100
1095 ms2184 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
int b[30010];
int p[30010];
int dp[30010];
priority_queue<pair<int,int>> pq;
signed main(){
 int n,m;
 cin>>m>>n;
 for(int i=1;i<=n;i++){
    cin>>b[i]>>p[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();
    for(int i=1;i<=n;i++){
        if(i==x)
            continue;
        if((b[i]-b[x])%p[x]==0){
            if(dp[i]>abs(b[i]-b[x])/p[x]+w){
                dp[i]=abs(b[i]-b[x])/p[x]+w;
                pq.push({-dp[i],i});
            }
        }
    }
 }
 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...