Submission #832501

#TimeUsernameProblemLanguageResultExecution timeMemory
832501gustasonCrosses on the Grid (FXCUP4_cross)C++17
100 / 100
101 ms18212 KiB
#include "cross.h"
#include <bits/stdc++.h>

using namespace std;

using ll = long long;

ll sq(int x) {
	return (ll) x * x;
}

ll plotas(int r, int R) {
	return sq(R) - sq(R-r);
}

ll SelectCross(int k, std::vector<int> r, std::vector<int> R) {
	int n = r.size();
	
	ll ans = 0;
	//for(int i = 0; i < n; i++) {
		//ans = max(ans, plotas(r[i], R[i]));
	//}
	
	vector<pair<int, int>> a(n);
	for(int i = 0; i < n; i++) {
		a[i] = {R[i], r[i]};
	}
	
	multiset<int> st;
	
	auto rem = [&](int x) {
		st.erase(st.find(x));
	};
	
	sort(a.rbegin(), a.rend());
	
	for(int i = 0; i < n; i++) {
		if ((int) st.size() < k) {
			st.insert(a[i].second);
		}
		else {
			if (*st.begin() < a[i].second) {
				rem(*st.begin());
				st.insert(a[i].second);
			}
		}
		
		if ((int) st.size() == k) {
			ans = max(ans, plotas(*st.begin(), a[i].first));
			//cout << a[i].first << " " << *st.begin() << " " << plotas(*st.begin(), a[i].first) << "\n";
		}
	}
	
	return ans;
}
	
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...