Submission #981040

#TimeUsernameProblemLanguageResultExecution timeMemory
981040vjudge1Beech Tree (IOI23_beechtree)C++17
9 / 100
50 ms6704 KiB
#include <bits/stdc++.h>
#define rep(a,b,c) for(int a=b; a<c; a++)
#define repr(a,b,c) for(int a=b-1; a>c-1; a--)
#define repa(a,b) for(auto a:b)
#define fi first
#define se second
#define pii pair<int, int>
#define pll pair<ll, ll>
#define ll long long
#define pb push_back

using namespace std;

vector<int> beechtree(int N, int M, vector<int> P, vector<int> C){
	vector<int> ans(N,0);
	if(N>8){
		repr(i,N,0){
			if(i==N-1) ans[i]=1;
			else{
				if(i<N-1 && C[i]==C[i+1]) ans[i]=ans[i+1];
				else ans[i]=0;
			}
		}
		return ans;
	}
	vector<int> subt[N];
	rep(i,0,N) subt[i].pb(i);
	repr(i,N,1) repa(e,subt[i]) subt[P[i]].pb(e);
	rep(i,0,N){
		sort(subt[i].begin(),subt[i].end());
		ans[i]=subt[i].size()==1;
		do{
			int e, cont;
			vector<int> s;
			rep(j,1,subt[i].size()){
				cont=0;
				e=subt[i][j];
				repa(f,s) if(f==C[e]) cont++; 
				if(e==i || P[e]!=subt[i][cont]) break;
				if(j==subt[i].size()-1) ans[i]=1;
				else s.pb(C[e]);
			}
			if(ans[i]) break;
		}while(next_permutation(subt[i].begin(),subt[i].end()));
	}
	return ans;
}

Compilation message (stderr)

beechtree.cpp: In function 'std::vector<int> beechtree(int, int, std::vector<int>, std::vector<int>)':
beechtree.cpp:2:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    2 | #define rep(a,b,c) for(int a=b; a<c; a++)
......
   35 |    rep(j,1,subt[i].size()){
      |        ~~~~~~~~~~~~~~~~~~         
beechtree.cpp:35:4: note: in expansion of macro 'rep'
   35 |    rep(j,1,subt[i].size()){
      |    ^~~
beechtree.cpp:40:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     if(j==subt[i].size()-1) ans[i]=1;
      |        ~^~~~~~~~~~~~~~~~~~
#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...