제출 #1238418

#제출 시각아이디문제언어결과실행 시간메모리
1238418vicvicLet's Win the Election (JOI22_ho_t3)C++20
100 / 100
413 ms492 KiB
#include <bits/stdc++.h>

using namespace std;
const int NMAX=500;
int n, k, indb[NMAX+5], inda[NMAX+5], rez=0, used[NMAX+5], ind[NMAX+5];
long double b[NMAX+5], a[NMAX+5];
int main ()
{
    ios_base :: sync_with_stdio (0);
    cin.tie (nullptr);
    cin >> n >> k;
    for (int i=0;i<n;i++)
        cin >> a[i] >> b[i], b[i]=b[i]==-1?1e9:b[i], ind[i]=i;
    sort (ind, ind+n, [] (int x, int y) {return b[x]<b[y];});
    long double ans=1e18;
    for (int c=0;c<=k;c++)
    {
        int r=k-c;
        vector <long double> dp (r+1, 1e18);
        dp[0]=0;
        for (int i=0;i<n;i++)
        {
            for (int j=r;j>=0;j--)
            {
                if (j!=r)
                    dp[j+1]=min (dp[j+1], dp[j]+1.0*a[ind[i]]/(c+1));
                int pz=i-j+1;
                if (pz>0 && pz<=c)
                    dp[j]+=1.0*b[ind[i]]/(pz);
            }
        }
        ans=min (ans, dp[r]);
    }
    cout << fixed << setprecision (20) << ans;
    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...