제출 #148688

#제출 시각아이디문제언어결과실행 시간메모리
148688USA1 (#200)십자가 놓기 (FXCUP4_cross)C++17
100 / 100
259 ms14436 KiB
#include "cross.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
long long SelectCross(int k, std::vector<int> a, std::vector<int> b) {
	vector<pair<int,int> > x;
	multiset<int> r;
	for(int i = 0; i < (int)a.size(); i++){
		x.push_back({a[i], b[i]});
	}
	sort(x.begin(), x.end());
	reverse(x.begin(), x.end());

	ll ans = 0;
	multiset<int> bb;
	for(pair<int,int> p : x){
		bb.insert(p.second);
		while((int)bb.size() > k) bb.erase(bb.begin());
		if((int)bb.size() == k){
			ll A = p.first;
			ll B = *bb.begin();
			ans = max(ans, 2 * A * B - A * A);
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...