Submission #100117

#TimeUsernameProblemLanguageResultExecution timeMemory
100117TadijaSebezJakarta Skyscrapers (APIO15_skyscraper)C++11
22 / 100
8 ms1228 KiB
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
const int N=30050;
const int inf=1e9+7;
int dist[N];
vector<int> jump[N];
int my[N],p[N];
int main()
{
	int n,m,i;
	scanf("%i %i",&n,&m);
	for(i=1;i<=m;i++) scanf("%i %i",&my[i],&p[i]),jump[my[i]].push_back(p[i]);
	for(i=1;i<=n;i++) dist[i]=inf;
	priority_queue<pair<int,int>> pq;
	pq.push(mp(0,my[1]));
	dist[my[1]]=0;
	while(pq.size())
	{
		int d=-pq.top().first;
		int z=pq.top().second;
		pq.pop();
		if(d!=dist[z]) continue;
        for(int j:jump[z])
		{
			int cnt=1;
			for(int i=z+j;i<=n;i+=j)
			{
				if(dist[i]>dist[z]+cnt)
				{
					dist[i]=dist[z]+cnt;
					pq.push(mp(-dist[i],i));
				}
				cnt++;
			}
			cnt=1;
			for(int i=z-j;i>=1;i-=j)
			{
				if(dist[i]>dist[z]+cnt)
				{
					dist[i]=dist[z]+cnt;
					pq.push(mp(-dist[i],i));
				}
				cnt++;
			}
		}
	}
	if(dist[my[2]]==inf) printf("-1\n");
	else printf("%i\n",dist[my[2]]);
	return 0;
}

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
skyscraper.cpp:13:47: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(i=1;i<=m;i++) scanf("%i %i",&my[i],&p[i]),jump[my[i]].push_back(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...