Submission #300669

#TimeUsernameProblemLanguageResultExecution timeMemory
300669CodePlatinaCarnival Tickets (IOI20_tickets)C++14
27 / 100
834 ms51392 KiB
#include "tickets.h"
#include <vector>
#include <algorithm>
#include <string>
#include <utility>
#define pii pair<int, int>
#define piii pair<int, pii>
#define pll pair<long long, long long>
#define plll pair<long long, pll>
#define ff first
#define ss second
#define ee ss.ff
#define rr ss.ss

using namespace std;

long long find_maximum(int k, vector<vector<int>> x)
{
	int n = x.size();
	int m = x[0].size();
	vector<vector<int>> ret(n, vector<int>(m, -1));

	int X[n], Y[n]; long long ans = 0;
	for(int i = 0; i < n; ++i) X[i] = min_element(x[i].begin(), x[i].end()) - x[i].begin(), Y[i] = max_element(x[i].begin(), x[i].end()) - x[i].begin(), ans += x[i][Y[i]];
    vector<pii> tmp; for(int i = 0; i < n; ++i) tmp.push_back({x[i][X[i]] + x[i][Y[i]], i});
    sort(tmp.begin(), tmp.end());
    for(int i = 0; i < n / 2; ++i) ans -= tmp[i].ff, ret[tmp[i].ss][X[i]] = 0;
    for(int i = n / 2; i < n; ++i) ret[tmp[i].ss][Y[i]] = 0;

	allocate_tickets(ret);
	return ans;
}
#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...