#include<bits/stdc++.h>
using namespace std;
const int N=510;
double a[N],b[N];
vector<pair<double,double>> v;
double dp[N][N],dpb[N][N];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n,vt,t=0;
    cin>>n >>vt;
    for(int i=1;i<=n;i++){
        cin>>a[i] >>b[i];
        if(b[i]==-1) b[i]=1e9;
        else t++;
        v.push_back({b[i],a[i]});
    }
    sort(v.begin(),v.end());
    double ans=INT_MAX;
    for(int g=0;g<=min(t,vt);g++){
        for(int i=0;i<=n;i++) for(int k=0;k<=vt;k++) dp[i][k]=INT_MAX;
        //think that dp[i][j]=dp[i][i][j] and dpb[i][j]=dp[i][j][g]
        dp[0][0]=0;
        for(int i=0;i<=n;i++) for(int j=0;j<=vt;j++) dpb[i][j]=INT_MAX;
        if(g==0) for(int i=0;i<=n;i++) dpb[i][0]=0;
        for(int i=1;i<=n;i++){
            for(int k=0;k<g;k++){
                if(k-1>=0) dp[i][k]=min(dp[i][k],dp[i-1][k-1]+v[i-1].first/(double)k);
                dp[i][k]=min(dp[i][k],dp[i-1][k]+v[i-1].second/(double)(g+1));
            }
            for(int j=1;j<=vt;j++){
                dpb[i][j]=min(dpb[i][j],dpb[i-1][j]);
                if(g-1>=0 && i==j) dpb[i][j]=min(dpb[i][j],dp[i-1][g-1]+v[i-1].first/(double)g);
                dpb[i][j]=min(dpb[i][j],dpb[i-1][j-1]+v[i-1].second/(double)(g+1));
            }
        }
        ans=min(ans,dpb[n][vt]);
    }
    // for(int i=0;i<=n;i++){
    //     for(int j=0;j<=vt;j++){
    //         if(dp[i][j]==INT_MAX) cout<<"- ";
    //         else cout<<dp[i][j] <<" ";
    //     }
    //     cout<<"\n";
    // }  
    // cout<<"\n";
    // for(int i=0;i<=n;i++){
    //     for(int j=0;j<=vt;j++){
    //         if(dpb[i][j]==INT_MAX) cout<<"- ";
    //         else cout<<dpb[i][j] <<" ";
    //     }
    //     cout<<"\n";
    // }  
    cout<<fixed <<setprecision(9) <<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... |