Submission #726338

#TimeUsernameProblemLanguageResultExecution timeMemory
726338TheSahibTeams (IOI15_teams)C++17
0 / 100
4059 ms40752 KiB
#include "teams.h"
#include <bits/stdc++.h>

#define ll long long
#define pii pair<int, int>

using namespace std;

int n;
vector<pii> v;

void init(int N, int A[], int B[])
{
    n = N;
    for (int i = 0; i < n; i++)
    {
        v.push_back({A[i], B[i]});
    }
}

int can(int M, int K[])
{
    sort(K, K + M);
    vector<int> events[n + 1];
    fill(events, events + n + 1, vector<int>());
    for (int i = 0; i < n; i++)
    {
        events[v[i].first].push_back(0);
        if(v[i].second + 1 <= n){
            events[v[i].second + 1].push_back(1);
        }
    }
    for (int i = 0; i <= n; i++)
    {
        sort(events[i].begin(), events[i].end());
    }
    
    
    int j = 0;
    int cnt = 0;
    int used = 0;
    for (int x = 0; x <= n; x++)
    {
        for(int e:events[x]){
            if(e == 0){
                ++cnt;
            }
            else{
                --cnt;
                used = max(0, used - 1);
            }
        }
        while(x == K[j]){
            if(cnt - used < K[j]){
                return false;
            }
            used += K[j];
            ++j;
            if(j == M) break;
        }
    }
    return true;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...