제출 #154036

#제출 시각아이디문제언어결과실행 시간메모리
154036youssefbou62팀들 (IOI15_teams)C++14
34 / 100
4091 ms33296 KiB
#include  <bits/stdc++.h>
#include "teams.h"
using namespace std;

#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define allarr(a) a , a + n
#define ll long long
#define ull unsigned long long 
#define pb push_back
#define fastio ios_base::sync_with_stdio(false) ; cin.tie(NULL); cout.tie(NULL)
typedef pair<int, int> pi;
typedef pair<ll,ll> pll; 
typedef pair<int,pi> trp ;
typedef vector<pi> vpi;
typedef vector<pll> vpll ;
// int ab  (int  x ) { return (x>0?x:-x); }
const int MaxN = 5e5+5; 
pi st[MaxN];
int n ,pr[MaxN];  
vector<int> in[MaxN]; 
void init(int N,int a[],int b[]){
	n = N ; 
	for(int i = 0 ; i < n ;i++ ){
		st[i]={a[i],b[i]};
		in[a[i]].pb(b[i]); 
	} 
	// sort(st,st+n); 
}

int can(int M,int K[]){
	// sort(K,K+M); 
	memset(pr,0,sizeof pr); 

	for(int i = 0 ; i < M ; i++ )pr[K[i]]++; 

	priority_queue<int,vector<int>,greater<int> >q ;  	
	for(int i = 1 ; i <= n ; i++ ){
		for(int j : in[i])
			q.push(j);  
		if( pr[i] ){
			if( (int)q.size() >= pr[i]*i ){
				int k = i *pr[i];
				while( k-- )q.pop(); 
			}else return 0; 
		}
		while( !q.empty() && q.top() == i )q.pop(); 
	}

	return 1  ;
} 

// int main(){

// 	int a[]={1,2,2,2},b[]={2,3,3,4};
// 	init(4,a,b); 

// 	int K[]={1,3},KK[]={1,1}; 
// 	cout << can(2,K)<<" " << can(2,KK)<<endl; 

// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...