Submission #1321712

#TimeUsernameProblemLanguageResultExecution timeMemory
1321712patgraSightseeing in Kyoto (JOI22_kyoto)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define rep(a,b,c) for(auto a = (b); a != (c); a++) #define repD(a,b,c) for(auto a = (b); a != (c); a--) #define repIn(a, b) for(auto& a : (b)) #define repIn2(a, b, c) for(auto& [a, b] : (c)) constexpr bool dbg = 1; #define DEBUG if constexpr(dbg) #define DC DEBUG std::cerr #define eol std::endl #define int long long #define ld long double #define pb push_back using namespace std; constexpr int inf = 2e18; int n, m; vector<int> a, b; map<array<int, 4>, int> mp; int _solve(int la, int ra, int lb, int rb) { if(la == ra) return a[la] * (rb - lb); if(lb == rb) return b[lb] * (ra - la); if(la + 1 == ra) { int ans = inf; rep(i, lb, rb + 1) ans = min(ans, a[la] * (i - lb) + b[i] + a[ra] * (rb - i)); return ans; } if(lb + 1 == rb) { int ans = inf; rep(i, la, ra + 1) ans = min(ans, b[lb] * (i - la) + a[i] + b[rb] * (ra - i)); return ans; } pair<int, int> mn = {inf, -1}; rep(i, la + 1, ra) mn = min(mn, {a[i], i}); int ma = mn.second; mn = {inf, -1}; rep(i, lb + 1, rb) mn = min(mn, {b[i], i}); int mb = mn.second; auto ans = min({a[la] * (rb - lb) + b[rb] * (ra - la), b[lb] * (ra - la) + a[ra] * (rb - lb), solve(la, ma, lb, mb) + solve(ma, ra, mb, rb)}); ans = min(ans, a[la] * (mb - lb) + solve(la, ra, mb, rb)); ans = min(ans, b[lb] * (ma - la) + solve(ma, ra, lb, rb)); ans = min(ans, a[ra] * (rb - mb) + solve(la, ra, lb, mb)); ans = min(ans, b[rb] * (ra - ma) + solve(la, ma, lb, rb)); return ans; } int solve(int la, int ra, int lb, int rb) { array<int, 4> ar = {la, ra, lb, rb}; if(!mp.count(ar)) mp[ar] = _solve(la, ra, lb, rb); return mp[ar]; } void bru() { vector<vector<array<int, 3>>> dp(n, vector<array<int, 3>>(m, {inf, -1, -1})); dp[0][0] = {0, 0, 0}; rep(i, 0, n) rep(j, 0, m) { auto x = dp[i][j][0]; if(i < n - 1) dp[i + 1][j] = min(dp[i + 1][j], {x + b[j], i, j}); if(j < m - 1) dp[i][j + 1] = min(dp[i][j + 1], {x + a[i], i, j}); } stack<array<int, 3>> s; int x = n - 1, y = m - 1; while(x || y) { auto [d, nx, ny] = dp[x][y]; s.push({d - dp[nx][ny][0], x, y}); x = nx, y = ny; } cout << dp[n - 1][m - 1][0] << '\n'; DC << "0, 0\n"; while(s.size()) { auto [c, x, y] = s.top(); s.pop(); DC << " -> " << x << ", " << y << " \tcosting " << c << '\n'; } } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> n >> m; a.resize(n), b.resize(m); repIn(i, a) cin >> i; repIn(i, b) cin >> i; cout << solve(0, n - 1, 0, m - 1) << '\n'; //bru(); }

Compilation message (stderr)

kyoto.cpp: In function 'long long int _solve(long long int, long long int, long long int, long long int)':
kyoto.cpp:44:99: error: 'solve' was not declared in this scope; did you mean '_solve'?
   44 |     auto ans = min({a[la] * (rb - lb) + b[rb] * (ra - la), b[lb] * (ra - la) + a[ra] * (rb - lb), solve(la, ma, lb, mb) + solve(ma, ra, mb, rb)});
      |                                                                                                   ^~~~~
      |                                                                                                   _solve
kyoto.cpp:44:19: error: no matching function for call to 'min(<brace-enclosed initializer list>)'
   44 |     auto ans = min({a[la] * (rb - lb) + b[rb] * (ra - la), b[lb] * (ra - la) + a[ra] * (rb - lb), solve(la, ma, lb, mb) + solve(ma, ra, mb, rb)});
      |                ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from kyoto.cpp:1:
/usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
kyoto.cpp:44:19: note:   candidate expects 2 arguments, 1 provided
   44 |     auto ans = min({a[la] * (rb - lb) + b[rb] * (ra - la), b[lb] * (ra - la) + a[ra] * (rb - lb), solve(la, ma, lb, mb) + solve(ma, ra, mb, rb)});
      |                ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note:   template argument deduction/substitution failed:
kyoto.cpp:44:19: note:   candidate expects 3 arguments, 1 provided
   44 |     auto ans = min({a[la] * (rb - lb) + b[rb] * (ra - la), b[lb] * (ra - la) + a[ra] * (rb - lb), solve(la, ma, lb, mb) + solve(ma, ra, mb, rb)});
      |                ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61:
/usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5775 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5775:5: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5785 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note:   template argument deduction/substitution failed: