Submission #1154397

#TimeUsernameProblemLanguageResultExecution timeMemory
1154397ZheingTeams (IOI15_teams)C++20
0 / 100
4094 ms9492 KiB
#include <bits/stdc++.h>
#include "teams.h"
using namespace std;

int N;
int *A, *B;

void init(int n, int *a, int *b) {
    N = n;
    A = new int[n];
    B = new int[n];
    for (int i = 0; i < n; ++i) {
        A[i] = a[i];
        B[i] = b[i];
    }
}

int can(int m, int *K) {
    vector<int> kList(K, K + m);
    sort(kList.begin(), kList.end(), greater<int>());

    vector<bool> assigned(N, false);
    int sum = 0;
    for (int i = 0; i < m; ++i) sum += K[i];
    if (sum > N) return 0;

    for (int k : kList) {
        int count = 0;
        for (int i = 0; i < N; ++i) {
            if (!assigned[i] && A[i] <= k && k <= B[i]) {
                count++;
            }
        }
        if (count < k) return 0;

        int needed = k;
        for (int i = 0; i < N && needed > 0; ++i) {
            if (!assigned[i] && A[i] <= k && k <= B[i]) {
                assigned[i] = true;
                needed--;
            }
        }
    }
    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...