Submission #1310913

#TimeUsernameProblemLanguageResultExecution timeMemory
1310913paulllolJakarta Skyscrapers (APIO15_skyscraper)C++20
0 / 100
2 ms584 KiB
#include<bits/stdc++.h>
using namespace std;
bool vs[30001];
int n,m,a,b,zz[30001],s0,s1,cnt;
unordered_map<int,vector<int>> z;
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
int main(){
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for(int i=0;i<m;i++){
        cin>>a>>b;
        z[a].emplace_back(i);
        zz[i]=b;
        if(i==0){
            s0=a;
        }
        if(i==1){
            s1=a;
        }
    }
    pq.emplace(make_pair(0,s0));
    while(!pq.empty()){
        a=pq.top().first;
        b=pq.top().second;
        pq.pop();
        if(vs[b]==0){
            vs[b]=1;
            if(b==s1){
                cout<<a;
                return 0;
            }
            for(int i=0;i<z[b].size();i++){
                cnt=1;
                for(int j=b+zz[z[b][i]];j<n;j+=zz[z[b][i]]){
                    if(vs[j]==0){
                        pq.emplace(make_pair(a+cnt,j));
                    }
                    cnt+=1;
                }
                cnt=1;
                for(int j=b-zz[z[b][i]];j>=0;j-=zz[z[b][i]]){
                    if(vs[j]==0){
                        pq.emplace(make_pair(a+cnt,j));
                    }
                    cnt+=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...