Submission #1339452

#TimeUsernameProblemLanguageResultExecution timeMemory
1339452javkhlantogsJakarta Skyscrapers (APIO15_skyscraper)C++20
36 / 100
355 ms327680 KiB
#include<bits/stdc++.h>
#define ll int
using namespace std;
int main(){
	ll n,m,a,b,i,j,k,q;
	cin>>n>>m;
	vector<pair<ll,ll>> bird(m);
	vector<vector<pair<ll,ll>>> e(n+1);
	for(i=0 ; i<m ; i++){
		cin>>bird[i].first>>bird[i].second;
		ll pos=bird[i].first;
		ll pos0=bird[i].first;
		while(pos+bird[i].second<n){
			pos+=bird[i].second;
			e[pos0].push_back({pos,(pos-pos0)/bird[i].second});
		}
		pos=bird[i].first;
		pos0=bird[i].first;
		while(pos-bird[i].second>=0){
			pos-=bird[i].second;
			e[pos0].push_back({pos,(pos0-pos)/bird[i].second});
		}
	}
	priority_queue<pair<ll,ll>> pq;
	pq.push({0,bird[0].first});
	vector<ll> dj(n,1e9);
	dj[bird[0].first]=0;
	while(pq.size()){
		ll dist=-pq.top().first;
		ll u=pq.top().second;
		pq.pop();
		for(auto v:e[u]){
			if(dist+v.second<dj[v.first]){
				dj[v.first]=dist+v.second;
				pq.push({-dj[v.first],v.first});
			}
		}
	}
	if(dj[bird[1].first]<1e9) cout<<dj[bird[1].first]<<"\n";
		else cout<<-1<<"\n";
	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...