Submission #553465

#TimeUsernameProblemLanguageResultExecution timeMemory
553465ala2Jakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
81 ms73556 KiB
#include <bits/stdc++.h> #define int long long #define F first #define S second #define pb push_back #define B begin() #define E end() using namespace std; int a[300010]; int b[300010]; //vector<pair<int,int>>v[100100]; int dist(int i,int j) { return abs(a[j]-a[i]); } int gg[2002][2002]; int dis[100100]; const int inf=1e17; signed main() { ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { gg[i][j] = inf; } } int ss=0,ee=0; for(int i=1; i<=m; i++) { cin>>a[i]>>b[i]; if(i==1) ss=a[i]; if(i==2) ee=a[i]; } for(int i=1; i<=m; i++) { int g=0; for(int j=a[i]-b[i]; j>=0; j-=b[i]) { g++; //cout<<" "<<a[i]<<" "<<j<<" "<<g<<endl; gg[a[i]][j]=min(gg[a[i]][j],g); } g=1; for(int j=a[i]+b[i]; j<n; j+=b[i]) { // cout<<" "<<a[i]<<" "<<j<<" "<<g<<endl; gg[a[i]][j]=min(gg[a[i]][j],g); g++; } } if(ss==ee) { cout<<0<<endl; return 0; } for(int i=0; i<=n+1; i++) { dis[i]=inf; } dis[ss]=0; priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q; q.push({0,ss}); while(!q.empty()) { // cout<<"D"; pair<int,int>x=q.top(); q.pop(); // cout<<" :::: "<<x.S<<endl; for(int i=0;i<n;i++) { if(i==x.S) continue; int ned=x.F+gg[x.S][i]; // cout<<" "<<i.F<<" "<<ned<<endl; if(ned<dis[i]) { //cout<<" "<<i.S<<" "<<ned<<" "<< dis[i]=ned; q.push({ned,i}); } } } if(dis[ee]<inf) cout<<dis[ee]<<endl; else cout<<-1<<endl; }
#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...