Submission #23726

# Submission time Handle Problem Language Result Execution time Memory
23726 2017-05-22T20:12:42 Z Nirjhor Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
3 ms 512 KB
#include <bits/stdc++.h>
#include "messy.h"

using namespace std;

const int N = 135;

// [l, r)
void go (int n, int l, int r) {
	if (l + 1 == r) return;
	int m = l + r >> 1;
	string s = "";
	for (int i = 0; i < n; ++i) {
		s += '1';
	}
	for (int i = l; i < r; ++i) {
		s[i] = '0';
	}
	for (int i = l; i < m; ++i) {
		s[i] = '1';
		// cout << s << endl;
		add_element(s);
		s[i] = '0';
	}
	go(n, l, m);
	go(n, m, r);
}

vector <int> v;

// no contains positions that don't belong to this range
void kill (int n, int l, int r, string no) {
	// cout << l << " " << r << " " << no << endl;
	if (l + 1 == r) {
		for (int i = 0; i < n; ++i) {
			if (no[i] == '0') {
				v[i] = l;
				break;
			}
		}
		return;
	}
	string x = no, y = "";
	for (int i = 0; i < n; ++i) {
		y += '1';
	}
	for (int i = 0; i < n; ++i) {
		if (no[i] == '0') {
			no[i] = '1';
			if (check_element(no)) {
				// cout << "found " << no << endl;
				x[i] = '1';
				y[i] = '0';
			}
			no[i] = '0';
		}
	}
	int m = l + r >> 1;
	kill(n, l, m, y);
	kill(n, m, r, x);
}

vector <int> restore_permutation (int n, int w, int r) {
	go(n, 0, n);
	compile_set();
	v.resize(n);
	string s = "";
	for (int i = 0; i < n; ++i) {
		s += '0';
	}
	kill(n, 0, n, s);
	return v;
}

// 10000000
// 01000000
// 00100000
// 00010000

// 10001111
// 01001111
// 11111000
// 11110100

// 10111111
// 11101111
// 11111011
// 11111110

Compilation message

messy.cpp: In function 'void go(int, int, int)':
messy.cpp:11:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int m = l + r >> 1;
          ~~^~~
messy.cpp: In function 'void kill(int, int, int, std::__cxx11::string)':
messy.cpp:58:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int m = l + r >> 1;
          ~~^~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB n = 8
2 Correct 2 ms 256 KB n = 8
3 Correct 2 ms 428 KB n = 8
4 Correct 2 ms 384 KB n = 8
5 Correct 2 ms 256 KB n = 8
6 Correct 2 ms 256 KB n = 8
7 Correct 2 ms 384 KB n = 8
8 Correct 2 ms 256 KB n = 8
9 Correct 2 ms 384 KB n = 8
10 Correct 2 ms 256 KB n = 8
11 Correct 2 ms 384 KB n = 8
12 Correct 2 ms 256 KB n = 8
13 Correct 2 ms 256 KB n = 8
14 Correct 2 ms 256 KB n = 8
15 Correct 2 ms 384 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 2 ms 384 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 300 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 392 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 256 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 256 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 2 ms 384 KB n = 32
7 Correct 2 ms 412 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 256 KB n = 32
13 Correct 2 ms 332 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 3 ms 484 KB n = 128
7 Correct 3 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 512 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 3 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 3 ms 512 KB n = 128
7 Correct 3 ms 484 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 512 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 3 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128