Submission #612593

#TimeUsernameProblemLanguageResultExecution timeMemory
612593krit3379Jakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
150 ms22800 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{ unsigned short a,b,c; }; unsigned short a[N],p[N]; vector<unsigned short> g[N]; bitset<N> vis; unordered_set<unsigned short> s[N]; queue<A> q; int main(){ ios_base::sync_with_stdio(false);cin.tie(nullptr); unsigned short n,m,i; cin>>n>>m; for(i=0;i<m;i++){ cin>>a[i]>>p[i]; g[a[i]].push_back(p[i]); } q.push({a[0],p[0],0}); s[a[0]].insert(p[0]); while(!q.empty()){ auto [x,po,w]=q.front(); q.pop(); if(x==a[1]){cout<<w;return 0;} if(x>=po&&!s[x-po].count(po))q.push({x-po,po,w+1}),s[x-po].insert(po); if(x+po<n&&!s[x+po].count(po))q.push({x+po,po,w+1}),s[x+po].insert(po); if(vis[x])continue; vis[x]=true; for(auto po:g[x]){ if(x>=po&&!s[x-po].count(po))q.push({x-po,po,w+1}),s[x-po].insert(po); if(x+po<n&&!s[x+po].count(po))q.push({x+po,po,w+1}),s[x+po].insert(po); } } cout<<-1; return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:31:47: warning: narrowing conversion of '(((int)x) - ((int)po))' from 'int' to 'short unsigned int' [-Wnarrowing]
   31 |         if(x>=po&&!s[x-po].count(po))q.push({x-po,po,w+1}),s[x-po].insert(po);
      |                                              ~^~~
skyscraper.cpp:31:55: warning: narrowing conversion of '(((int)w) + 1)' from 'int' to 'short unsigned int' [-Wnarrowing]
   31 |         if(x>=po&&!s[x-po].count(po))q.push({x-po,po,w+1}),s[x-po].insert(po);
      |                                                      ~^~
skyscraper.cpp:32:48: warning: narrowing conversion of '(((int)x) + ((int)po))' from 'int' to 'short unsigned int' [-Wnarrowing]
   32 |         if(x+po<n&&!s[x+po].count(po))q.push({x+po,po,w+1}),s[x+po].insert(po);
      |                                               ~^~~
skyscraper.cpp:32:56: warning: narrowing conversion of '(((int)w) + 1)' from 'int' to 'short unsigned int' [-Wnarrowing]
   32 |         if(x+po<n&&!s[x+po].count(po))q.push({x+po,po,w+1}),s[x+po].insert(po);
      |                                                       ~^~
skyscraper.cpp:36:51: warning: narrowing conversion of '(((int)x) - ((int)po))' from 'int' to 'short unsigned int' [-Wnarrowing]
   36 |             if(x>=po&&!s[x-po].count(po))q.push({x-po,po,w+1}),s[x-po].insert(po);
      |                                                  ~^~~
skyscraper.cpp:36:59: warning: narrowing conversion of '(((int)w) + 1)' from 'int' to 'short unsigned int' [-Wnarrowing]
   36 |             if(x>=po&&!s[x-po].count(po))q.push({x-po,po,w+1}),s[x-po].insert(po);
      |                                                          ~^~
skyscraper.cpp:37:52: warning: narrowing conversion of '(((int)x) + ((int)po))' from 'int' to 'short unsigned int' [-Wnarrowing]
   37 |             if(x+po<n&&!s[x+po].count(po))q.push({x+po,po,w+1}),s[x+po].insert(po);
      |                                                   ~^~~
skyscraper.cpp:37:60: warning: narrowing conversion of '(((int)w) + 1)' from 'int' to 'short unsigned int' [-Wnarrowing]
   37 |             if(x+po<n&&!s[x+po].count(po))q.push({x+po,po,w+1}),s[x+po].insert(po);
      |                                                           ~^~
#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...