제출 #1315770

#제출 시각아이디문제언어결과실행 시간메모리
1315770AlmontherJakarta Skyscrapers (APIO15_skyscraper)C++20
10 / 100
1 ms332 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define co cout<< // stuff void solve(){ ll n,k; cin>>n>>k; vector<ll>v[n+5]; ll dp[n+5]={}; for(int i=0;i<n;i++) dp[i]=1e18; ll st=-1,en=-1; for(int i=0;i<k;i++){ ll x,y; cin>>x>>y; if(st==-1) st=x; else if(en==-1) en=x; v[x].push_back(y); } set<pair<ll,ll>>curr; curr.insert({st,0}); dp[st]=0; while(curr.size()){ auto [dis,i]=*curr.begin(); curr.erase(curr.begin()); for(auto j:v[i]){ for(int k=1;i+j*k<n;k++){ ll x=i+j*k; if(dp[x]>dp[i]+k){ curr.erase({dp[x],x}); dp[x]=dp[i]+k; curr.insert({dp[x],x}); } } for(int k=1;i-j*k>=0;k++){ ll x=i-j*k; if(dp[x]>dp[i]+k){ curr.erase({dp[x],x}); dp[x]=dp[i]+k; curr.insert({dp[x],x}); } } } } co ((dp[en]==1e18)?-1:dp[en]); } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int _=1; // cin>>_; while(_--) 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...