Submission #81977

#TimeUsernameProblemLanguageResultExecution timeMemory
81977lovemathboyMechanical Doll (IOI18_doll)C++14
37 / 100
132 ms12956 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

void answer(vector<int> C, vector<int> X, vector<int> Y);

int n, m;
vector<int> a, b;
vector<int> x, y;

void build(int p, int l, int r) {
	if (l == r-1) {
		if (b[l] < n) {
			x[p-1] = a[b[l]];
		}
		else x[p-1] = -1;
		if (b[r] < n) {
			y[p-1] = a[b[r]];
		}
		else if (b[r] == b.size() - 1) y[p-1] = 0;
		else y[p-1] = -1;
	}
	else {
		x[p-1] = -(2*p);
		y[p-1] = -(2*p+1);
		int mid = (l+r)/2;
		build(2*p, l, mid);
		build(2*p+1, mid+1, r);
	}
}

void create_circuit(int M, vector<int> A) {
	a = A; m = M;
	n = A.size();
	b.push_back(0);
	a.push_back(0);
	while (b.size() < n+1) {
		vector<int> temp;
		for (int i = 0; i < b.size(); i++) {
			temp.push_back(b[i]);
			temp.push_back(b[i] + b.size());
		}
		b = temp;
	}
	/*for (int i = 0; i < b.size(); i++) {
		printf("%d ", b[i]);
	}
	printf("\n");
	for (int i = 0; i < a.size(); i++) {
		printf("%d ", a[i]);
	}
	printf("\n");*/
	vector<int> C(M + 1);
	for (int i = 0; i <= m; i++) {
		C[i] = -1;
	}
	x.resize(b.size()-1); y.resize(b.size()-1);
	build(1, 0, b.size()-1);
	answer(C, x, y);
}

Compilation message (stderr)

doll.cpp: In function 'void build(int, int, int)':
doll.cpp:20:17: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   else if (b[r] == b.size() - 1) y[p-1] = 0;
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:37:18: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |  while (b.size() < n+1) {
      |         ~~~~~~~~~^~~~~
doll.cpp:39:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |   for (int i = 0; i < b.size(); i++) {
      |                   ~~^~~~~~~~~~
#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...