Submission #1241338

#TimeUsernameProblemLanguageResultExecution timeMemory
1241338mychecksedadBeech Tree (IOI23_beechtree)C++17
0 / 100
2095 ms2101156 KiB
#include "beechtree.h"
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define pii pair<int,int>
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define pb push_back
const int N = 2e5+100;

vi T[N];
std::vector<int> beechtree(int n, int m, std::vector<int> P, std::vector<int> C)
{
  for(int i = 0; i < n; ++i) T[i].clear();
  vi res(n);
  for(int i = n-1; i >= 0; --i){
    T[i].pb(i);
    for(int u: T[i]){
      T[P[i]].pb(u);
    }
  }
  res[n - 1] = 1;
  for(int i = n-2; i >= 0; --i){
    vi v;
    for(int u: T[i]) v.pb(u);
    sort(all(v));
    do{
      vi col(m);
      bool ok = true;
      for(int j = 1; j < v.size(); ++j){
        if(v[col[C[v[j]]]] != P[v[j]]){
          ok = false;
          break;
        }
        col[C[j]]++;
      }
      if(ok){
        res[i] = 1;
        break;
      }
    }while(next_permutation(all(v)));
  }


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