Submission #1333189

#TimeUsernameProblemLanguageResultExecution timeMemory
1333189kawhietTeams (IOI15_teams)C++20
34 / 100
4094 ms10128 KiB
#include <bits/stdc++.h>
#include "teams.h"
using namespace std;

int n;
vector<int> a, b, p;

void init(int N, int A[], int B[]) {
    n = N;
    vector<int> ord(n);
    iota(ord.begin(), ord.end(), 0);
    ranges::sort(ord, [&](int i, int j) {
        if (B[i] == B[j]) {
            return A[i] > A[j];
        }
        return B[i] < B[j];
    });
    a.resize(n);
    b.resize(n);
    for (int i = 0; i < n; i++) {
        a[i] = A[ord[i]];
        b[i] = B[ord[i]];
    }
}

int can(int M, int K[]) {
    int m = M;
    vector<int> k;
    k.assign(K, K + M);
    ranges::sort(k);
    vector<bool> vis(n);
    for (auto x : k) {
        int cnt = 0;
        for (int i = 0; i < n; i++) {
            if (cnt == x) break;
            if (!vis[i] && a[i] <= x && x <= b[i]) {
                vis[i] = 1;
                cnt++;
            }
        }
        if (cnt < x) {
            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...