Submission #1268059

#TimeUsernameProblemLanguageResultExecution timeMemory
1268059ChuanChenLet's Win the Election (JOI22_ho_t3)C++20
10 / 100
4 ms328 KiB
#include<bits/stdc++.h>
using namespace std;

#define debug(v) //cout << #v << ": " << v << endl; 

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 2e5+5, inf = 2e9;
const ll INF = 1e18;

int n, k;
vector<pii> states;

bool cmp(pii x, pii y){
	return x.second < y.second;
}

long double ans = inf;

int main(){
	cin >> n >> k;
	for(int i = 1; i <= n; i++){
		int a, b; cin >> a >> b;
		if(b==-1) b = inf;
		states.push_back({a, b});
	}
	sort(states.begin(), states.end(), cmp);

	for(int T = 0; T <= k; T++){
		if(T>0 && states[T-1].second == inf) break;
		long double spent = 0;
		int efficiency = 1;
		for(int i = 0; i < T; i++){
			spent += states[i].second/(long double)efficiency;
			efficiency++;
		}

		vector<int> left_over;
		for(int i = T; i < n; i++) left_over.push_back(states[i].first);
		sort(left_over.begin(), left_over.end());
		int sum = 0;
		for(int i = 0; i < k-T; i++) sum += left_over[i];
		spent += sum/(long double)efficiency;

		debug(T);
		debug(spent)
		ans = min(ans, spent);
	}
	cout << fixed << setprecision(16) << 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...