Submission #594655

#TimeUsernameProblemLanguageResultExecution timeMemory
5946551neLet's Win the Election (JOI22_ho_t3)C++14
10 / 100
1035 ms8728 KiB
#include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n,k;cin>>n>>k; vector<pair<double long,double long>>arr,temp; for (int i = 0;i<n;++i){ double long x,y;cin>>x>>y; if (y == -1){ temp.push_back({x,y}); } else{ arr.push_back({x,y}); } } sort(arr.begin(),arr.end(),[&](auto x,auto y){ if (x.second == y.second)return x.first < y.first; return x.second < y.second; }); sort(temp.begin(),temp.end(),[&](auto x,auto y){ return x.first < y.first; }); for (auto x:temp)arr.push_back(x); double long mxn = 1e8; vector<vector<double long>>dp(n + 1,vector<double long>(n + 1,mxn)); dp[0][0] = 0.0; for (int i = 0;i<n;++i){ vector<vector<double long>>cur_dp(n + 1,vector<double long>(n + 1,mxn)); for (int j = 0;j<=i;++j){ for (int p = 0;p <= j;++p){ cur_dp[j][p] = min(cur_dp[j][p],dp[j][p]); cur_dp[j + 1][p + 1] = min(cur_dp[j + 1][p + 1],dp[j + 1][p + 1]); cur_dp[j + 1][p] = min(cur_dp[j + 1][p],dp[j + 1][p]); if (arr[i].second!=-1){ cur_dp[j + 1][p + 1] = min(dp[j][p] + (double long)(arr[i].second / (p + 1)),cur_dp[j + 1][p + 1]); } cur_dp[j + 1][p] = min(cur_dp[j + 1][p],dp[j][p] + (double long)(arr[i].first / (p + 1))); } } swap(cur_dp,dp); } double long ans = mxn; for (int i = 0;i<=n;++i){ ans = min(ans,dp[k][i]); } cout<<fixed<<setprecision(15)<<ans<<'\n'; return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...