Submission #1224080

#TimeUsernameProblemLanguageResultExecution timeMemory
1224080NAMINLet's Win the Election (JOI22_ho_t3)C++20
10 / 100
2 ms328 KiB
#include <bits/stdc++.h>

#define ll long long
#define endl "\n"

using namespace std;

void solve(){
	int N,K;
	cin >> N >> K;
	vector<pair<long double,long double>> A(N),B(N);
	for(int i=0;i<N;i++){
		cin >> A[i].first >> B[i].first;
		A[i].second = i,B[i].second=i;
	}
	
	sort(A.begin(),A.end());
	sort(B.begin(),B.end());
	
	long double ans = 1e18;
	for(int k=0;k<=K;k++){
		long double sum = 0;
		vector<bool> take(N,false);
		int i=0;
		long double coef=0;
		while(coef<k&&i<N){
			if(B[i].first!=-1){
				sum += B[i].first/(coef+(long double)1);
				coef=coef+1;
				take[B[i].second] = true;
			}
			i++;
		}
		//cout << sum << endl;
		i=0;
		int m=0;
		//cout << coef << endl;
		while(m+coef<K){
			if(!take[A[i].second]){
				m++;
				take[A[i].second]=true;
				sum += A[i].first/(coef+(long double)1);
			}
			i++;
		}
		//cout << sum << endl;
		//for(int i=0;i<N;i++){
			//cout << take[i] << ' ';
		//}
		//cout << endl;
		ans = min(ans,sum);
	}
	cout << fixed << setprecision(10) << ans << endl;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int t=1;
	//cin >> t;
	while(t--){
		solve();
	}
}
#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...