Submission #938948

#TimeUsernameProblemLanguageResultExecution timeMemory
938948PacybwoahLet's Win the Election (JOI22_ho_t3)C++17
Compilation error
0 ms0 KiB
#include<iostream> #include<vector> #include<iomanip> #include<utility> #include<algorithm> using namespace std; typedef float ld; vector<pair<ld,ld>> vec; int n,k; ld solve(int m){ vector<vector<ld>> dp(n+1,vector<ld>(k-m+1,1e9+7)); dp[1][0]=(m>0?vec[1].first:0); if(k-m>0) dp[1][1]=vec[1].second/ld(m+1); for(int i=2;i<=n;i++){ for(int j=0;j<=min(k-m,i);j++){ if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j))); if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1)); } } /*for(int i=1;i<=n;i++){ for(int j=0;j<=k-m;j++) if(m==2) cout<<dp[i][j]<<" "; cout<<"\n"; }*/ return dp[n][k-m]; } int main(){ ios::sync_with_stdio(false); cin.tie(0); cin>>n>>k; vec.resize(n+1); for(int i=1;i<=n;i++) cin>>vec[i].second>>vec[i].first; for(int i=1;i<=n;i++) if(vec[i].first==-1) vec[i].first=1e9; sort(next(vec.begin()),vec.end()); //for(int i=1;i<=n;i++) cout<<vec[i].first<<' '<<vec[i].second<<"\n"; int l=0,r=k; ld ans=1e9+7; while(l<r){ int mid=(l+r)>>1; ld a=solve(max(mid,0)),b=solve(min(mid+1,r)); ans=min(ans,min(a,b)); if(a>b) l=min(mid+1,r); else r=(max(mid,0)); } //for(int i=0;i<=k;i++) ans=min(ans,solve(i)); cout<<fixed<<setprecision(12)<<ans; }

Compilation message (stderr)

Main.cpp: In function 'ld solve(int)':
Main.cpp:16:96: error: no matching function for call to 'min(__gnu_cxx::__alloc_traits<std::allocator<float>, float>::value_type&, long double)'
   16 |             if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j)));
      |                                                                                                ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from Main.cpp:1:
/usr/include/c++/10/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++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
Main.cpp:16:96: note:   deduced conflicting types for parameter 'const _Tp' ('float' and 'long double')
   16 |             if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j)));
      |                                                                                                ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from Main.cpp:1:
/usr/include/c++/10/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++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
Main.cpp:16:96: note:   deduced conflicting types for parameter 'const _Tp' ('float' and 'long double')
   16 |             if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j)));
      |                                                                                                ^
In file included from /usr/include/c++/10/algorithm:62,
                 from Main.cpp:5:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
Main.cpp:16:96: note:   mismatched types 'std::initializer_list<_Tp>' and 'float'
   16 |             if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j)));
      |                                                                                                ^
In file included from /usr/include/c++/10/algorithm:62,
                 from Main.cpp:5:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
Main.cpp:16:96: note:   mismatched types 'std::initializer_list<_Tp>' and 'float'
   16 |             if(i!=j) dp[i][j]=min(dp[i][j],dp[i-1][j]+(i-j>m?0:vec[i].first/(long double)(i-j)));
      |                                                                                                ^
Main.cpp:17:88: error: no matching function for call to 'min(__gnu_cxx::__alloc_traits<std::allocator<float>, float>::value_type&, long double)'
   17 |             if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1));
      |                                                                                        ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from Main.cpp:1:
/usr/include/c++/10/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++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
Main.cpp:17:88: note:   deduced conflicting types for parameter 'const _Tp' ('float' and 'long double')
   17 |             if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1));
      |                                                                                        ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/ostream:38,
                 from /usr/include/c++/10/iostream:39,
                 from Main.cpp:1:
/usr/include/c++/10/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++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
Main.cpp:17:88: note:   deduced conflicting types for parameter 'const _Tp' ('float' and 'long double')
   17 |             if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1));
      |                                                                                        ^
In file included from /usr/include/c++/10/algorithm:62,
                 from Main.cpp:5:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
Main.cpp:17:88: note:   mismatched types 'std::initializer_list<_Tp>' and 'float'
   17 |             if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1));
      |                                                                                        ^
In file included from /usr/include/c++/10/algorithm:62,
                 from Main.cpp:5:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
Main.cpp:17:88: note:   mismatched types 'std::initializer_list<_Tp>' and 'float'
   17 |             if(j>0) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+vec[i].second/(long double)(m+1));
      |                                                                                        ^