제출 #1268044

#제출 시각아이디문제언어결과실행 시간메모리
1268044ChuanChenLet'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 = 1e9;
const ll INF = 1e18;

int n, k;
vector<pii> states;

bool cmp(pii a, pii b){
	return a.second < b.second;
}

double ans = inf;

int main(){
	cin >> n >> k;
	for(int i = 1; i <= n; i++){
		int a, b; cin >> a >> b;
		b = b<0? inf:b;
		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;
		double eficiency = 1;
		double spent = 0;
		for(int i = 0; i < T; i++){
			spent += states[i].second/eficiency;
			eficiency++;
		}

		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());

		for(int i = 0; T+i < k; i++){
			spent += left_over[i]/eficiency;
		}
		ans = min(ans, spent);
	}
	cout << 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...