#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define show3(x,y,z) cout<<#x<<": "<<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl;
int n,k;
vector<pair<int,int>>a;
#define ld long double
int memo[1005][1005];
ld dp(int pos, int collab){
if(pos==n)return 0;
if(memo[pos][collab]!=-1)return memo[pos][collab];
ld res=2e18;
// dont take collab
res=min(res,dp(pos+1,collab)+a[pos].second/(ld)collab);
//take collab
if(a[pos].first!=LLONG_MAX)
res=min(res,dp(pos+1,collab+1)+a[pos].first/(ld)collab);
// cout<<"pos: "<<pos<<endl;
// cout<<a[pos].first<<' '<<a[pos].second<<endl;
// cout<<res<<endl;
return memo[pos][collab]=res;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>k;
fill(&memo[0][0],&memo[0][0]+1005*1005,-1);
a.resize(n);
for(auto &x:a){
cin>>x.second>>x.first;
if(x.first==-1)x.first=LLONG_MAX;
}
sort(a.begin(),a.end());
ld ans=dp(0,1);
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |