Submission #1301525

#TimeUsernameProblemLanguageResultExecution timeMemory
1301525timeflewTeams (IOI15_teams)C++20
34 / 100
4096 ms6556 KiB
#include "teams.h"
#include<bits/stdc++.h>
using namespace std;

#define ll long long

int n;
int idx[500000];
multiset<int> ms;
int *a, *b;

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

int can(int M, int K[]) {
	ms.clear();
	int cnt=0;
	sort(K, K+M);
	int ptr=0;
	iota(idx, idx+n, 0);
	sort(idx, idx+n, [&](int i, int j) {
		if(a[i]!=a[j])
			return a[i]<a[j];
		else
			return b[i]<b[j];
	});
	for(int i=0; i<M; i++) {
		while(ptr<n&&a[idx[ptr]]<=K[i]) {
			ms.insert(b[idx[ptr++]]);
		}
		int cnt=K[i];
		while(1) {
			auto it=ms.lower_bound(K[i]);
			if(it==ms.end())
				break;
			ms.erase(it);
			cnt--;
			if(cnt==0)
				break;
		}
		if(cnt)
			return 0;
	}
	return 1;
}
//	kustov_vadim_533 orz
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...