Submission #546369

#TimeUsernameProblemLanguageResultExecution timeMemory
546369jamezzz자동 인형 (IOI18_doll)C++17
6 / 100
86 ms25244 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> out[500005];

void create_circuit(int M,vector<int> A){
	int N=A.size();
	out[0].push_back(A[0]);
	for(int i=0;i<N-1;++i){
		out[A[i]].push_back(A[i+1]);
	}
	out[A[N-1]].push_back(0);
	
	vector<int> C(M+1);
	vector<int> X,Y;
	
	int cur=1;
	for(int i=0;i<M+cur;++i){
		if(i<=M){
			if(out[i].size()==0)continue;
			if(out[i].size()==1){
				C[i]=out[i][0];
			}
			else{
				for(int x:out[i])out[M+cur].push_back(x);
				C[i]=-cur;
				++cur;
			}
		}
		else{
			vector<int> l,r;
			for(int j=0;j<out[i].size();++j){
				if(j%2==0)l.push_back(out[i][j]);
				else r.push_back(out[i][j]);
			}
			
			if(l.size()==1)X.push_back(l[0]);
			else{
				X.push_back(-cur);
				swap(out[M+cur],l);
				++cur;
			}
			
			if(r.size()==1)Y.push_back(r[0]);
			else{
				Y.push_back(-cur);
				swap(out[M+cur],r);
				++cur;
			}
		}
	}
	
	answer(C,X,Y);
}

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:33:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |    for(int j=0;j<out[i].size();++j){
      |                ~^~~~~~~~~~~~~~
#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...