Submission #1152873

#TimeUsernameProblemLanguageResultExecution timeMemory
1152873burgerguySeptember (APIO24_september)C++20
100 / 100
451 ms17008 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);
    }

    set<ll> curProcessing;
    map<ll,ll> seen;

    ll curDay = 0;

    for (int i = 0; i < N - 1; i++) {
        for (int j = 0; j < M; j++) {
            curProcessing.insert(S[j][i]);
            seen[S[j][i]]++;

            curProcessing.insert(initialTree[S[j][i]].begin(), initialTree[S[j][i]].end());

            if(seen[S[j][i]] == M) {
                curProcessing.erase(S[j][i]);
                initialTree[F[S[j][i]]].erase(S[j][i]);
            }
        }

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

    return curDay;
}
#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...