Submission #516211

#TimeUsernameProblemLanguageResultExecution timeMemory
516211CaoHuuKhuongDuyJakarta Skyscrapers (APIO15_skyscraper)C++14
Compilation error
0 ms0 KiB
// #pragma GCC target("avx2") // #pragma GCC optimize("Ofast") // #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> #define ll long long #define cll const ll #define lp(a, b, c) for(ll a = b; a <= c; ++a) #define lpd(a, b, c) for(ll a = b; a >= c; --a) #define vec(a) vector<a> #define pp(a, b) pair<a, b> #define EACHCASE lpd(cs, read(), 1) #define Fname "f" using namespace std; template <typename T> inline void Read(T &x){ x = 0; char c; ll dau = 1; while(!isdigit(c = getchar())) if(c == '-') dau = -1; do{ x = x * 10 + c - '0'; } while (isdigit(c = getchar())); x *= dau; } ll read(){ ll tmp; cin >> tmp; return tmp; } void giuncute(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } void OF(){ if(fopen(Fname".inp", "r")){ freopen(Fname".inp", "r", stdin); freopen(Fname".out", "w", stdout); } else if(fopen(Fname".in", "r")){ freopen(Fname".in", "r", stdin); freopen(Fname".out", "w", stdout); } } cll mxn = 3e4 + 5; ll _sqrt = 173; ll n, m, dp[mxn][_sqrt + 4]; vec(ll) jump[mxn]; priority_queue<pp(ll, pp(ll, ll))> q; void prc(ll u, ll cu, ll step){ if(u + step < n && dp[u + step][step] > cu + 1){ dp[u + step][step] = cu + 1; q.push({-dp[u + step][step], {u + step, step}}); } if(u - step >= 0 && dp[u - step][step] > cu + 1){ dp[u - step][step] = cu + 1; q.push({-dp[u - step][step], {u - step, step}}); } } bool Visit[mxn]; int main(){ giuncute(); #ifndef ONLINE_JUDGE // OF(); // freopen("test.inp","r",stdin); #endif cin >> n >> m; _sqrt=sqrt(n); int st,ed; lp(i, 1, m){ ll u, p; cin >> u >> p; if (i==1) st=u; if (i==2) ed=u; jump[u].push_back(p); } if (n==1) { cout<<-1; return 0; } lp(i, 0, n) lp(j, 0, _sqrt) dp[i][j] = 1e16; dp[st][0]=0; q.push({0, {st, 0}}); while(q.size()){ ll cu = -q.top().first, u = q.top().second.first, step = q.top().second.second; q.pop(); if(cu != dp[u][step]) continue; // maintain last step prc(u, cu, step); // change step if (Visit[u]) continue; Visit[u]=true; if (dp[u][0]>cu) { dp[u][0]=cu; q.push({-dp[u][0],{u,0}}); } for(ll i : jump[u]){ if(i <= _sqrt) { prc(u, cu, i); if (dp[u][i]>cu) { dp[u][i]=cu; q.push({-dp[u][i],{u,i}}); } } else{ for(ll v = u + i, cnt = 1; v < n; v += i, ++cnt) if(dp[v][0] > cu + cnt){ dp[v][0] = cu + cnt; q.push({-dp[v][0], {v, 0}}); } for(ll v = u - i, cnt = 1; v >= 0; v -= i, ++cnt) if(dp[v][0] > cu + cnt){ dp[v][0] = cu + cnt; q.push({-dp[v][0], {v, 0}}); } } } } ll ans = 1e16; lp(i, 0, _sqrt) ans = min(ans, dp[ed][i]); if(ans > 1e15) ans = -1; cout << ans; }

Compilation message (stderr)

skyscraper.cpp:48:27: error: array bound is not an integer constant before ']' token
   48 | ll n, m, dp[mxn][_sqrt + 4];
      |                           ^
skyscraper.cpp: In function 'void prc(long long int, long long int, long long int)':
skyscraper.cpp:54:24: error: 'dp' was not declared in this scope; did you mean 'pp'?
   54 |     if(u + step < n && dp[u + step][step] > cu + 1){
      |                        ^~
      |                        pp
skyscraper.cpp:56:55: error: no matching function for call to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::push(<brace-enclosed initializer list>)'
   56 |         q.push({-dp[u + step][step], {u + step, step}});
      |                                                       ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from skyscraper.cpp:4:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<long long int, std::pair<long long int, long long int> >&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::value_type&&' {aka 'std::pair<long long int, std::pair<long long int, long long int> >&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
skyscraper.cpp:58:25: error: 'dp' was not declared in this scope; did you mean 'pp'?
   58 |     if(u - step >= 0 && dp[u - step][step] > cu + 1){
      |                         ^~
      |                         pp
skyscraper.cpp:60:55: error: no matching function for call to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::push(<brace-enclosed initializer list>)'
   60 |         q.push({-dp[u - step][step], {u - step, step}});
      |                                                       ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from skyscraper.cpp:4:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<long long int, std::pair<long long int, long long int> >&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::value_type&&' {aka 'std::pair<long long int, std::pair<long long int, long long int> >&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
skyscraper.cpp: In function 'int main()':
skyscraper.cpp:85:33: error: 'dp' was not declared in this scope; did you mean 'pp'?
   85 |     lp(i, 0, n) lp(j, 0, _sqrt) dp[i][j] = 1e16;
      |                                 ^~
      |                                 pp
skyscraper.cpp:86:5: error: 'dp' was not declared in this scope; did you mean 'pp'?
   86 |     dp[st][0]=0;
      |     ^~
      |     pp
skyscraper.cpp:102:37: error: no matching function for call to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::push(<brace-enclosed initializer list>)'
  102 |             q.push({-dp[u][0],{u,0}});
      |                                     ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from skyscraper.cpp:4:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<long long int, std::pair<long long int, long long int> >&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::value_type&&' {aka 'std::pair<long long int, std::pair<long long int, long long int> >&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
skyscraper.cpp:111:45: error: no matching function for call to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::push(<brace-enclosed initializer list>)'
  111 |                     q.push({-dp[u][i],{u,i}});
      |                                             ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from skyscraper.cpp:4:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<long long int, std::pair<long long int, long long int> >&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::value_type&&' {aka 'std::pair<long long int, std::pair<long long int, long long int> >&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
skyscraper.cpp:118:51: error: no matching function for call to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::push(<brace-enclosed initializer list>)'
  118 |                         q.push({-dp[v][0], {v, 0}});
      |                                                   ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from skyscraper.cpp:4:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<long long int, std::pair<long long int, long long int> >&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::value_type&&' {aka 'std::pair<long long int, std::pair<long long int, long long int> >&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
skyscraper.cpp:123:51: error: no matching function for call to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::push(<brace-enclosed initializer list>)'
  123 |                         q.push({-dp[v][0], {v, 0}});
      |                                                   ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from skyscraper.cpp:4:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<long long int, std::pair<long long int, long long int> >&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<long long int, std::pair<long long int, long long int> >; _Sequence = std::vector<std::pair<long long int, std::pair<long long int, long long int> >, std::allocator<std::pair<long long int, std::pair<long long int, long long int> > > >; _Compare = std::less<std::pair<long long int, std::pair<long long int, long long int> > >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<long long int, std::pair<long long int, long long int> >]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<long long int, std::pair<long long int, long long int> > >::value_type&&' {aka 'std::pair<long long int, std::pair<long long int, long long int> >&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
skyscraper.cpp: In function 'void OF()':
skyscraper.cpp:38:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         freopen(Fname".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:39:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   39 |         freopen(Fname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:41:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         freopen(Fname".in", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:42:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   42 |         freopen(Fname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~