제출 #824356

#제출 시각아이디문제언어결과실행 시간메모리
824356ttamxLet's Win the Election (JOI22_ho_t3)C++14
10 / 100
1 ms340 KiB
#include<bits/stdc++.h>

using namespace std;

const int N=505;

typedef long double ld;

int n,m;
ld a[N],b[N];
ld ans=LDBL_MAX;
int orda[N],ordb[N];
bool used[N];

int main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n >> m;
    for(int i=1;i<=n;i++)cin >> a[i] >> b[i];
    for(int i=1;i<=n;i++)if(b[i]==-1)b[i]=LDBL_MAX;
    iota(orda,orda+n+1,0);
    iota(ordb,ordb+n+1,0);
    sort(orda+1,orda+n+1,[&](int x,int y){
        return a[x]<a[y];
    });
    sort(ordb+1,ordb+n+1,[&](int x,int y){
        if(b[x]==b[y])return a[x]>a[y];
        return b[x]<b[y];
    });
    ld cost=0;
    for(int i=1;i<=m;i++){
        ld res=cost;
        int cnt=i-1;
        for(int j=1;cnt<m;j++){
            if(used[orda[j]])continue;
            res+=a[orda[j]]/i;
            cnt++;
        }
        ans=min(ans,res);
        cost+=b[ordb[i]]/i;
        used[ordb[i]]=true;
    }
    cout << fixed << ans;
}
#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...