Submission #612588

#TimeUsernameProblemLanguageResultExecution timeMemory
612588krit3379Jakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
1086 ms87348 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define N 30005 struct A{ int a,b,c; }; int a[N],p[N]; vector<int> g[N]; bitset<N> vis; unordered_map<int,int> mp[N]; queue<A> q; int main(){ int n,m,i; scanf("%d %d",&n,&m); for(i=0;i<m;i++){ scanf("%d %d",&a[i],&p[i]); g[a[i]].push_back(p[i]); } q.push({a[0],p[0],0}); mp[a[0]][p[0]]=0; while(!q.empty()){ auto [x,po,w]=q.front(); q.pop(); if(x==a[1]){printf("%d",w);return 0;} if(x>=po&&!mp[x-po].count(po))q.push({x-po,po,w+1}),mp[x-po][po]=w+1; if(x+po<n&&!mp[x+po].count(po))q.push({x+po,po,w+1}),mp[x+po][po]=w+1; if(vis[x])continue; vis[x]=true; for(auto po:g[x]){ if(x>=po&&!mp[x-po].count(po))q.push({x-po,po,w+1}),mp[x-po][po]=w+1; if(x+po<n&&!mp[x+po].count(po))q.push({x+po,po,w+1}),mp[x+po][po]=w+1; } } printf("-1"); return 0; }

Compilation message (stderr)

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