Submission #1246516

#TimeUsernameProblemLanguageResultExecution timeMemory
1246516countlessTeams (IOI15_teams)C++20
0 / 100
4091 ms14228 KiB
#include "teams.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;

#define sp <<" "<<
#define endl "\n"

int n;
vector<int> a, b, o;

void init(int N, int A[], int B[]) {
	n = N;
	a.resize(n), b.resize(n), o.resize(n);
	for (int i = 0; i < n; i++) {
		a[i] = A[i], b[i] = B[i];
	}

	iota(o.begin(), o.end(), 0);
	sort(o.begin(), o.end(), [&](int i, int j) {
		return a[i] < a[j];
	});
}

int can(int M, int K[]) {
	int m = M;
	vector<int> k(m);
	ll sum = 0;
	for (int i = 0; i < m; i++) {
		k[i] = K[i];
		sum += k[i];
	}
	
	if (sum > n) return 0;
	sort(k.begin(), k.end());
	
	priority_queue<int, vector<int>, greater<int>> pq;
	int l = 0, r = 0;
	for (int i = 0; i < M; i++) {
		while (r < n and a[o[r]] <= k[i]) r++;
		for (int j = l; j < r; j++) {
			pq.emplace(b[o[j]]);
		}
		l = r;

		for (int j = 0; j < k[i]; j++) {
			if (pq.empty()) return 0;
			pq.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...