Submission #102077

# Submission time Handle Problem Language Result Execution time Memory
102077 2019-03-22T06:58:42 Z bert30702 Mechanical Doll (IOI18_doll) C++17
76.0329 / 100
160 ms 10476 KB
#include <bits/stdc++.h>
#include "doll.h"
using namespace std;
const int MX = 4e5 + 1000;
int ptr = 0;
int x[MX], y[MX], c[MX];
//void answer(vector<int> c, vector<int> x, vector<int> y) {
//	cout << x.size() << endl;
//	for(auto it: c) cout << it << ' '; cout << endl;
//	for(auto it: x) cout << it << ' '; cout << endl;
//	for(auto it: y) cout << it << ' '; cout << endl;
//}
int build(vector<int> v) {
	if(ptr != 0 and *max_element(v.begin(), v.end()) == *min_element(v.begin(), v.end())) return v[0];
	int d = --ptr;
	vector<int> a, b;
	for(int i = 0; i < v.size(); i ++) {
		if(i & 1) b.push_back(v[i]);
		else      a.push_back(v[i]);
	}
	x[-d] = build(a);
	y[-d] = build(b);
	return d;
}
void create_circuit(int n, vector<int> v) {
	vector<int> a(v.begin() + 1, v.end()); a.push_back(0);
	int k = max(2, 1 << __lg(a.size() * 2 - 1));
	vector<int> tmp(k), GG(k, 0);
	int need = k - a.size();
	for(int i = k / 2; i >= 1; i >>= 1) {
		for(int j = 0; j < k; j += i) {
			if(!GG[j] and need) {
				assert(j != k - 1);
				GG[j] = true, tmp[j] = -1, need --;
			}
		}
	}
	for(int i = k - 1; i >= 0; i --) {
		if(!GG[i]) tmp[i] = a.back(), a.pop_back();
	}
	build(tmp); c[0] = v[0];
	for(int i = 1; i <= n; i ++) c[i] = -1;
	answer(
		vector<int>(c, c + n + 1),
		vector<int>(x + 1, x + 1 - ptr),
		vector<int>(y + 1, y + 1 - ptr)
	);
}
//main () {
//	create_circuit(100000, {44135, 56348, 19047, 45933, 82429, 97231, 20613, 10472, 34398, 72594, 60486, 14499, 13048, 53662, 38600, 74603});
//}

Compilation message

doll.cpp: In function 'int build(std::vector<int>)':
doll.cpp:17:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |  for(int i = 0; i < v.size(); i ++) {
      |                 ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 53 ms 4676 KB Output is correct
3 Correct 55 ms 4616 KB Output is correct
4 Correct 2 ms 204 KB Output is correct
5 Correct 15 ms 1484 KB Output is correct
6 Incorrect 87 ms 6844 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 53 ms 4676 KB Output is correct
3 Correct 55 ms 4616 KB Output is correct
4 Correct 2 ms 204 KB Output is correct
5 Correct 15 ms 1484 KB Output is correct
6 Incorrect 87 ms 6844 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 53 ms 4676 KB Output is correct
3 Correct 55 ms 4616 KB Output is correct
4 Correct 2 ms 204 KB Output is correct
5 Correct 15 ms 1484 KB Output is correct
6 Incorrect 87 ms 6844 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 23 ms 4916 KB Output is correct
3 Correct 26 ms 8008 KB Output is correct
4 Correct 51 ms 8864 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 23 ms 4916 KB Output is correct
3 Correct 26 ms 8008 KB Output is correct
4 Correct 51 ms 8864 KB Output is correct
5 Partially correct 140 ms 10420 KB Output is partially correct
6 Partially correct 140 ms 10468 KB Output is partially correct
7 Partially correct 140 ms 10412 KB Output is partially correct
8 Partially correct 147 ms 10420 KB Output is partially correct
9 Correct 106 ms 8752 KB Output is correct
10 Correct 131 ms 10272 KB Output is correct
11 Partially correct 139 ms 10412 KB Output is partially correct
12 Correct 99 ms 9004 KB Output is correct
13 Correct 105 ms 7072 KB Output is correct
14 Correct 94 ms 8940 KB Output is correct
15 Correct 94 ms 9004 KB Output is correct
16 Correct 4 ms 716 KB Output is correct
17 Correct 81 ms 6820 KB Output is correct
18 Correct 88 ms 6836 KB Output is correct
19 Correct 91 ms 9024 KB Output is correct
20 Partially correct 142 ms 10408 KB Output is partially correct
21 Partially correct 160 ms 10460 KB Output is partially correct
22 Partially correct 138 ms 10476 KB Output is partially correct