Submission #1203673

#TimeUsernameProblemLanguageResultExecution timeMemory
1203673fadyscubeSeptember (APIO24_september)C++20
16 / 100
1091 ms330740 KiB
#include "september.h"

#include <vector>
#include <bits/stdc++.h>

using namespace std;

int ans = 0;

int check (vector<int> &v, vector<int> &perm) {
    set<int> s1, s2;
    int k = 0;
    for (int i = 0; i < v.size(); i++) {
        s1.insert(v[i]);
        s2.insert(perm[i]);
        if (s1 == s2) k++;
    }
    return k;
}

void permutation (vector<int> graph, vector<int> perm, vector<int> &v) {
    if (perm.size() == graph.size()-1) {
        ans = max(ans, check(v, perm));
        return;
    }

    vector<bool> occ(v.size()+1, 0);
    for (int i = 1; i < graph.size(); i++)
        occ[graph[i]] = 1;

    for (int i = 1; i <= v.size(); i++) {
        if (occ[i]) continue;
        vector<int> tmp = perm;
        tmp.push_back(i);
        vector<int> tmp_graph = graph;
        tmp_graph[i] = i;
        permutation(tmp_graph, tmp, v);
    }
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
    ans = 0;
    permutation(F, {}, S[0]);

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