Submission #435347

#TimeUsernameProblemLanguageResultExecution timeMemory
435347iANikzadJakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
415 ms203920 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define F first #define S second #define debug(x) cerr<<#x<<" :"<<x<<"\n" #define all(x) x.begin(),x.end() #define pii pair<int,int> #define mp make_pair #define FAST ios_base::sync_with_stdio(false), cin.tie(), cout.tie(); //#define int long long typedef long long ll; typedef long double ld; const int maxn = 3e4 + 7; const int mod = 1e9 + 7; const int INF = 1e9 + 7; const int mlog = 20; const int SQRT = 170; int n, m; int a[maxn], p[maxn]; vector<int> vec[maxn]; vector<pii> q[maxn * SQRT]; int ss, res; int H[maxn][SQRT], F[maxn]; void add(int x,int u,int t) { if(u >= SQRT) { for(int i = 0; i < SQRT; i++) { if(x + i*u < n && !H[x+i*u][0]) ss++, q[t+i].pb(mp(x+i*u,0)); if(x - i*u >= 0 && !H[x-i*u][0]) ss++, q[t+i].pb(mp(x-i*u,0)); } } else if(!H[x][u]) ss++, q[t].pb(mp(x,u)); } int32_t main() { FAST; cin >> n >> m; for(int i = 0; i < m; i++) { cin >> a[i] >> p[i]; vec[a[i]].pb(p[i]); } add(a[0], p[0], 0); for(res = 0; ss; res++) { for(int i = 0; i < q[res].size(); i++, ss--) { int x = q[res][i].F; int u = q[res][i].S; if(x == a[1]) return cout << res << "\n", 0; if(H[x][u]) continue; H[x][u] = 1; if(u) if(x + u < n && !H[x + u][u]) ss++ ,q[res + 1].pb(mp(x + u,u)); if(x - u >= 0 && !H[x - u][u]) ss++, q[res + 1].pb(mp(x - u,u)); if(F[x]) continue; F[x] = 1; for(int j = 0; j < vec[x].size(); j++) add(x, vec[x][j], res); } } cout << -1 << "\n"; return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int32_t main()':
skyscraper.cpp:67:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |         for(int i = 0; i < q[res].size(); i++, ss--)
      |                        ~~^~~~~~~~~~~~~~~
skyscraper.cpp:83:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |             for(int j = 0; j < vec[x].size(); j++)
      |                            ~~^~~~~~~~~~~~~~~
#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...