Submission #1215816

#TimeUsernameProblemLanguageResultExecution timeMemory
1215816ASGA_RedSeaBeech Tree (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...