Submission #1228015

#TimeUsernameProblemLanguageResultExecution timeMemory
1228015peraCyberland (APIO23_cyberland)C++20
Compilation error
0 ms0 KiB
#include "cyberland.h"
#include <bits/stdc++.h>
#define LL long long
using namespace std;

double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
   vector<vector<pair<int , LL>>> g(N);
   for(int i = 0;i < M;i ++){
      g[x[i]].emplace_back(y[i] , c[i]);
      g[y[i]].emplace_back(x[i] , c[i]);
   }
   K = min(K , 30);
   vector<vector<LL>> dist(N , vector<LL>(K + 1 , -1));
   priority_queue<tuple<LL , int , int> , vector<tuple<LL , int , int>> , greater<tuple<LL , int , int>>> pq;
   double ans = -1;
   for(int i = 0;i < N;i ++){
      if(i == 0 || arr[i] == 0){
         dist[i][0] = 0;
         pq.push(tuple<LL , int , int>{0 , i , 0});
      }
   }
   while((int)pq.size()){
      auto [D , u , x] = pq.top();
      pq.pop();
      if(dist[u][x] != D){
         continue;
      }
      if(u == H){
         long double S = D;
         for(int i = 0;i < x;i ++){
            S /= 2.0;
         }
         if(ans == -1){
            ans = S;
         }else{
            ans = min(ans , S);
         }
         continue;
      }
      for(auto [v , w] : g[u]){
         LL nD = D + w;
         if(dist[v][x] == -1 || dist[v][x] > nD){
            dist[v][x] = nD;
            pq.push(tuple<LL , int , int>{dist[v][x] , v , x});
         }
         if(arr[v] == 2 && x < K && (dist[v][x + 1] == -1 || dist[v][x + 1] > nD)){
            dist[v][x + 1] = nD;
            pq.push(tuple<LL , int , int>{dist[v][x + 1] , v , x + 1});
         }
      }
   }
   return (double)ans;
}

Compilation message (stderr)

cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:36:22: error: no matching function for call to 'min(double&, long double&)'
   36 |             ans = min(ans , S);
      |                   ~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:60,
                 from cyberland.h:1,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
cyberland.cpp:36:22: note:   deduced conflicting types for parameter 'const _Tp' ('double' and 'long double')
   36 |             ans = min(ans , S);
      |                   ~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:60,
                 from cyberland.h:1,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
cyberland.cpp:36:22: note:   deduced conflicting types for parameter 'const _Tp' ('double' and 'long double')
   36 |             ans = min(ans , S);
      |                   ~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:62,
                 from cyberland.h:1,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3449:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3449 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3449:5: note:   template argument deduction/substitution failed:
cyberland.cpp:36:22: note:   mismatched types 'std::initializer_list<_Tp>' and 'double'
   36 |             ans = min(ans , S);
      |                   ~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:62,
                 from cyberland.h:1,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3455:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3455:5: note:   template argument deduction/substitution failed:
cyberland.cpp:36:22: note:   mismatched types 'std::initializer_list<_Tp>' and 'double'
   36 |             ans = min(ans , S);
      |                   ~~~^~~~~~~~~