제출 #119066

#제출 시각아이디문제언어결과실행 시간메모리
119066oolimry팀들 (IOI15_teams)C++14
34 / 100
4034 ms21268 KiB
#include "teams.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
int n;
ii arr[1000005];
void init(int N, int A[], int B[]) {
    n = N;
    for(int i = 0;i < n;i++){
        arr[i] = {A[i],B[i]};
    }
    sort(arr,arr+n);
}

int can(int M, int K[]) {
    int m = M;
    int s = 0;
    for(int i = 0;i < m;i++) s += K[i];
    if(s > n) return 0;

    int tasks[s];
    int cnt = 0;
    for(int i = 0;i < m;i++){
        for(int j = 0;j < K[i];j++){
            tasks[cnt] = K[i];
            cnt++;
        }
    }
    sort(tasks,tasks+s);
    priority_queue<int, vector<int>, greater<int> > stuff;
    int index = 0;
    for(int i = 0;i < s;i++){
        while(index < n && arr[index].first <= tasks[i]){
            stuff.push(arr[index].second);
            index++;
        }
        while(true){
            if(stuff.empty()){
                return 0;
            }
            if(stuff.top() < tasks[i]){
                stuff.pop();
            }
            else{
                stuff.pop();
                break;
            }
        }
        //cout << stuff.size() << "\n";
    }
	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...