Submission #299679

#TimeUsernameProblemLanguageResultExecution timeMemory
299679cfalasMechanical Doll (IOI18_doll)C++14
16 / 100
368 ms24048 KiB
#include "doll.h"
#include<bits/stdc++.h>

using namespace std;

#define FORi(i,a,b) for(int i=a;i<b;i++)
#define FOR(i,n) FORi(i,0,n)
#define FOA(v,n) for(auto v : n)
#define len(a) ((int)a.size())
typedef vector<int> vi;

map<int, vi> points;
bool vis[100000];
vi X,Y,c;
void rec(int cur){
	//cout<<"Recursing "<<cur<<endl;
	vis[cur] = true;

	if(len(points[cur])==4){
		int orig = -len(X)-1;
		c[cur] = -len(X)-1;
		//cout<<"adding "<<-len(X)-1<<endl;
		X.push_back(-len(X)-2);
		Y.push_back(-len(X)-2);
		X.push_back(points[cur][0]);
		X.push_back(points[cur][1]);
		Y.push_back(points[cur][2]);
		Y.push_back(points[cur][3]);
	}
	else if(len(points[cur])==3){
		int orig = -len(X)-1;
		c[cur] = -len(X)-1;
		//cout<<"adding "<<-len(X)-1<<endl;
		X.push_back(-len(X)-2);
		Y.push_back(-len(X)-2);
		X.push_back(orig);
		Y.push_back(points[cur][1]);
		X.push_back(points[cur][0]);
		Y.push_back(points[cur][2]);
	}
	else if(len(points[cur])==2){
		c[cur] = -len(X)-1;
		X.push_back(points[cur][0]);
		Y.push_back(points[cur][1]);
	}
	else c[cur] = points[cur][0];
	//cout<<"Recursing "<<cur<<endl;
	FOA(v,points[cur]) if(!vis[v]) rec(v);

}

void create_circuit(int M, std::vector<int> A) {
	c.resize(M+1);
	A.push_back(0);
	int prev=0;
	points[0].push_back(A[0]);
	FOR(i,len(A)-1){
		points[A[i]].push_back(A[i+1]);
	}
	rec(0);
	//FOR(i,M+1) cout<<i<<" "<<c[i]<<endl;
	//FOR(i,len(X)) cout<<-i-1<<" "<<X[i]<<" "<<Y[i]<<endl;

	answer(c, X, Y);
}

Compilation message (stderr)

doll.cpp: In function 'void rec(int)':
doll.cpp:20:7: warning: unused variable 'orig' [-Wunused-variable]
   20 |   int orig = -len(X)-1;
      |       ^~~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:55:6: warning: unused variable 'prev' [-Wunused-variable]
   55 |  int prev=0;
      |      ^~~~
#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...