제출 #1007450

#제출 시각아이디문제언어결과실행 시간메모리
1007450bachhoangxuan팀들 (IOI15_teams)C++17
0 / 100
130 ms23244 KiB
#include "teams.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+5;
int n,lt[maxn],rt[maxn];

void init(int N, int A[], int B[]) {
    for(int i=0;i<N;i++){
        lt[B[i]]++;
        rt[A[i]]++;
    }
    for(int i=1;i<=N;i++) lt[i]+=lt[i-1];
    for(int i=N;i>=1;i--) rt[i]+=rt[i+1];
    n=N;
}

int can(int M, int K[]) {
    vector<int> com;
    for(int i=0;i<M;i++) com.push_back(K[i]);
    sort(com.begin(),com.end());
    com.erase(unique(com.begin(),com.end()),com.end());
    int sz=(int)com.size();
    vector<int> cnt(sz);
    for(int i=0;i<M;i++) cnt[lower_bound(com.begin(),com.end(),K[i])-com.begin()]++;
    for(int i=0;i<sz;i++){
        if(cnt[i]>n/com[i]) return 0;
        cnt[i]*=com[i];
        if(i) cnt[i]+=cnt[i-1];
        if(cnt[i]>n) return 0;
    }
    for(int i=0;i<sz;i++) for(int j=i;j<sz;j++){
        int num=n-(lt[com[i]-1]+rt[com[j]+1]);
        int val=(i?cnt[j]-cnt[i-1]:cnt[j]);
        if(num<val) return 0;
    }
    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...