Submission #1201521

#TimeUsernameProblemLanguageResultExecution timeMemory
1201521AMel0nSeptember (APIO24_september)C++17
100 / 100
188 ms15296 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
// #define F first 
// #define S second

#include "september.h"


int solve(int N, int M, vector<int> P, vector<vector<int>> S) {
    vector<vector<int>> C(N);
    for(int i = 1; i < N; i++) C[P[i]].push_back(i);

    unordered_set<int> hL; // hanging leaves
    vector<bool> done(N);
    unordered_set<int> seen;

    int K = 0;
    FOR(i, S[0].size()) {
        int cur = S[0][i];

        done[cur] = true;
        if (hL.find(cur) != hL.end()) hL.erase(hL.find(cur));

        C[P[cur]].erase(find(all(C[P[cur]]), (cur))); 
        for(auto c: C[cur]) {
            if (!done[c]) {
                hL.insert(c);
            }
        }

        FOR(j, M) seen.insert(S[j][i]);

        if (hL.empty() && seen.size() == i+1) K++;
    }

    return K;
}

// signed main() {
//     cin.tie(0); ios::sync_with_stdio(false);

// }
#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...