Submission #1152699

#TimeUsernameProblemLanguageResultExecution timeMemory
1152699burgerguySeptember (APIO24_september)C++20
45 / 100
250 ms21192 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
    vector<set<ll>> initialTree(N);
    for (int i = 1; i < F.size(); i++) {
        initialTree[F[i]].insert(i);
    }

    ll possibleDays = INT_MAX;

    for(vector<int> record : S) {
        set<ll> curProcessing;
        vector<set<ll>> tree = initialTree;

        ll curDays = 0;

        for(int e : record) {
            curProcessing.insert(tree[e].begin(), tree[e].end());
            curProcessing.erase(e);

            tree[F[e]].erase(e);

            if(curProcessing.empty()) ++curDays;
        }

        possibleDays = min(possibleDays, curDays);
    }

    return possibleDays;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...