Submission #1155248

#TimeUsernameProblemLanguageResultExecution timeMemory
1155248sodbayrJakarta Skyscrapers (APIO15_skyscraper)C++20
100 / 100
548 ms4624 KiB
#include<bits/stdc++.h>
#define int long long
#define ss second
#define ff first
#define pb push_back
const int mxn=30005;
using namespace std;
signed main(){
    ios_base::sync_with_stdio(false); 
	cin.tie(0); 
	cout.tie(0);
    int n,m;
    cin>>n>>m;
    int b[m],p[m];
    vector<int>a[n];
    for(int i=0;i<m;i++){
        cin>>b[i]>>p[i];
        a[b[i]].pb(p[i]);
    }
    set<pair<int,int>>s;
    s.insert({0,b[0]});
    vector<int>d(n,1e9);
    d[b[0]]=0;
    while(!s.empty()) {
        pair<int,int> q=*s.begin();
        s.erase(s.begin());
        int C=q.ff,p=q.ss;
        for(int i:a[p]) {
            int c=p,t=0;
            while(c>=0){
                if(C+t<d[c]) {
                    if(d[c]<1e9) s.erase({d[c],c});
                    d[c]=C+t;
                    s.insert({d[c],c});
                }
                c-=i;
                t++;
            }
            c=p;
            t=0;
            while(c<n) {
                if(C+t<d[c]) {
                    if(d[c]<1e9) s.erase({d[c],c});
                    d[c]=C+t;
                    s.insert({d[c],c});
                }
                c+=i;
                t++;
            }
        }
    }
    if(d[b[1]]==1e9){
        cout<<"-1";
    } else {
        cout<<d[b[1]];
    }
}
#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...