Submission #349923

#TimeUsernameProblemLanguageResultExecution timeMemory
349923denkendoemeerJakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
341 ms8672 KiB
#include<bits/stdc++.h>
const int inf=1e9;
using namespace std;
int poz[30005],p[30005],dist[30005];
vector<pair<int,int>>g[30005];
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
set<int>st[30005];
int main()
{
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    int n,m,i;
    scanf("%d%d",&n,&m);
    for(i=0;i<m;i++){
        scanf("%d%d",&poz[i],&p[i]);
        st[poz[i]].insert(p[i]);
    }
    for(i=0;i<n;i++)
        dist[i]=inf;
    dist[poz[0]]=0;
    pq.push({0,poz[0]});
    while(pq.size()){
        int nod=pq.top().second;
        pq.pop();
        if (nod==poz[1]){
            printf("%d\n",dist[poz[1]]);
            return 0;
        }
        for(auto it:st[nod]){
            for(i=nod+it;i<n;i=i+it){
                if (dist[i]>dist[nod]+(i-nod)/it){
                    dist[i]=dist[nod]+(i-nod)/it;
                    pq.push({dist[i],i});
                }
                if (st[i].count(it))
                    break;
            }
            for(i=nod-it;i>=0;i=i-it){
                if (dist[i]>dist[nod]+(nod-i)/it){
                    dist[i]=dist[nod]+(nod-i)/it;
                    pq.push({dist[i],i});
                }
                if (st[i].count(it))
                    break;
            }
        }
    }
    printf("-1\n");
return 0;
}

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   13 |     scanf("%d%d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~
skyscraper.cpp:15:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   15 |         scanf("%d%d",&poz[i],&p[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#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...