Submission #384497

#TimeUsernameProblemLanguageResultExecution timeMemory
384497LucaDantasTeams (IOI15_teams)C++17
13 / 100
4072 ms109792 KiB
#include "teams.h"
#include <queue>
#include <vector>
#include <algorithm>

std::priority_queue<int, std::vector<int>, std::greater<int>> q;

int *a, *b, n;

void init(int N, int A[], int B[]) {
	n = N, a = A, b = B;
}

struct Event
{
	int t, x, r;
	bool operator<(Event e) { if(x == e.x) return t < e.t; return x < e.x; }
};

std::vector<Event> events;

int can(int M, int K[]) {
	for(int i = 0; i < n; i++)
		events.push_back({0, a[i], b[i]});
	for(int i = 0; i < M; i++)
		events.push_back({1, K[i], K[i]});
	std::sort(events.begin(), events.end());
	for(int i = 0; i < n + M; i++) {
		while(q.size() && q.top() < events[i].x)
			q.pop();
		if(!events[i].t) q.push(events[i].r);
		else {
			while(events[i].r--) {
				if(!q.size()) return 0;
				q.pop();
			}
		}
	}
	return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...