Submission #938093

#TimeUsernameProblemLanguageResultExecution timeMemory
938093vjudge1Let's Win the Election (JOI22_ho_t3)C++17
100 / 100
611 ms600 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long double ld;

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int N, K; cin >> N >> K;
	vector<pair<ld, ld>> v(N);
	for(int i = 0; i < N; i++){
		cin >> v[i].second >> v[i].first;
		if(v[i].first == -1) v[i].first = 1e9;
	}
	sort(v.begin(), v.end());
	ld ans = 7e18;
	for(ld collaborators = 0; collaborators < K; collaborators++){
		int mx = K - collaborators;
		vector<ld> dp(mx+1, 1e18);
		dp[0] = 0;
		for(int i = 0; i < N; i++){
			for(int elem = mx; elem >= 0; elem--){					
				if(elem != mx){
					dp[elem+1] = min(dp[elem+1], dp[elem] + v[i].second / (1.0+collaborators));
				}
				int ind = i+1 - elem;
				if(ind <= 0) continue;
				if(ind <= collaborators) dp[elem] += v[i].first / (ld)ind;
			}
		}
		ans = min(ans, dp[mx]);
	}
	cout << fixed << setprecision(8) << ans << "\n";
}
#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...