제출 #418087

#제출 시각아이디문제언어결과실행 시간메모리
418087qwerasdfzxcl카니발 티켓 (IOI20_tickets)C++14
16 / 100
637 ms57112 KiB
#include "tickets.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll find_maximum(int k, vector<vector<int>> x) {
	int n = x.size();
	int m = x[0].size();
	vector<vector<int>> ans;
	ans.resize(n);
	for (int i=0;i<n;i++){
        ans[i].resize(m);
        fill(ans[i].begin(), ans[i].end(), -1);
	}
	ll ret = 0;
	vector<pair<int, int>> LR(n);
	fill(LR.begin(), LR.end(), make_pair(0, m-1));
	for (int z=0;z<k;z++){
        priority_queue<pair<ll, int>> pq;
        for (int i=0;i<n;i++){
            ret += x[i][LR[i].second];
            pq.push({-x[i][LR[i].first]-x[i][LR[i].second], i});
            ans[i][LR[i].second] = z;
            LR[i].second--;
        }
        for (int i=0;i<n/2;i++){
            auto p = pq.top(); pq.pop();
            ret += p.first;
            ans[p.second][LR[p.second].first] = z;
            LR[p.second].first++, LR[p.second].second++;
            ans[p.second][LR[p.second].second] = -1;
        }
	}
	allocate_tickets(ans);
	return ret;
}
#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...