제출 #1186525

#제출 시각아이디문제언어결과실행 시간메모리
1186525pedroslreyUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <bits/stdc++.h>
#include "messy.h"

using namespace std;

void make_queries(int l, int r, int n) {
	if (r == l + 1) return;

	int m = (l + r)/2;

	string q(n, '0');
	for (int i = l; i < r; ++i)
		q[i] = '1';

	for (int i = l; i < m; ++i) {
		q[i] = '0';
		add_element(q);
		q[i] = '1';
	}

	make_queries(l, m, n);
	make_queries(m, r, n);
}

void calc_answer(int l, int r, string &s, vector<int> &ans) {
	int n = s.size();
	if (r == l + 1) {
		for (int i = 0; i < n; ++i)
			if (s[i] == '1') ans[i] = l;
		return;
	}

	string lft(n, '0'), rgt(n, '0');
	for (int i = 0; i < n; ++i) if (s[i] == '1') {
		s[i] = '0';
		
		if (check_element(s)) lft[i] = '1';
		else rgt[i] = '1';

		s[i] = '1';
	}

	int m = (l + r)/2;
	calc_answer(l, m, lft, ans);
	calc_answer(m, r, rgt, ans);
}

vector<int> restore_permutation(int n, int _, int __) {
	make_queries(0, n, n);

	compile_set();

	vector<int> ans(n);
	string s(n, '1');
	calc_answer(0, n, s, ans);

	return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...