Submission #1215816

#TimeUsernameProblemLanguageResultExecution timeMemory
1215816ASGA_RedSea참나무 (IOI23_beechtree)C++20
0 / 100
0 ms324 KiB
/**

                                    * بسم الله الرحمن الرحيم *

                ﴾ رَبِّ اشْرَحْ لِي صَدْرِي * وَيَسِّرْ لِي أَمْرِي * وَاحْلُلْ عُقْدَةً مِّن لِّسَانِي * يَفْقَهُوا قَوْلِي ﴿

*/

/// author : "ASGA"

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

using namespace std;
using ll=long long;

#include"beechtree.h"


int S=0;
int n,m;
vector<int>c,ans,p;
vector<vector<int>>a;



vector<vector<int>>nd;
void calc1(int i){
    vector<int>&pp=nd[i];

    pp={i};
    for(int&j:a[i]){
        calc1(j);
        for(int&k:nd[j])pp.push_back(k);
    }

    sort(pp.begin(),pp.end());

    do{
        vector<int>f(m+1,0);
        int vl=1;

        for(int i=1;i<pp.size();i++){
            vl&=pp[f[c[pp[i]]]]==p[pp[i]];
            f[c[pp[i]]]++;
        }

        if(vl){ans[i]=1;break;}
    }
    while(next_permutation(pp.begin()+1,pp.end()));
}


vector<int>beechtree(int N,int M,vector<int>P,vector<int>C){
    n=N;m=M;c=C;a.resize(n);ans.assign(n,0);p=P;
    for(int i=1;i<n;i++)a[p[i]].push_back(i);

    S=1;for(int i=1;i<n;i++)S&=p[i]==i-1;

    vector<int>f(m+1,0);for(int&i:c)f[i]++;

    if(S){
        ;
    }
    else if(n<9){
        nd.resize(n);
        calc1(0);
    }
    else if(*max_element(f.begin(),f.end())<3){
        ;
    }
    else{
        ;
    }



    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...