답안 #65295

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
65295 2018-08-07T10:18:07 Z mhnd Unscrambling a Messy Bug (IOI16_messy) C++17
0 / 100
2 ms 384 KB
#include "messy.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
const int N = 3e5+50;
const ll oo = 1e18;
const ll mod = 1e9+7;

int n;
vector<int> ans;

void add(int l,int r){
	if(l > r)return;
	int md = (l+r)/2;
	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<md;i++){
		s[i] = '1';
		add_element(s);
		s[i] = '0';
	}
	add(l,md);
	add(md,r);
}


void ask(int l,int r,string s){
	if(l > r){
		for(int i=0;i<n;i++)
			if(s[i] == '0'){
				ans[i] = l;
				break;
			}
		return;
	}
	string x=s,y="";
	for(int i=0;i<n;i++)y+='1';
	for(int i=0;i<n;i++){
		if(s[i] == '0'){
			s[i]='1';
			if(check_element(s)){
				x[i] = '1';
				y[i] = '0';
			}
			s[i]='0';
		}
	}
	int md = (l+r)/2;
	ask(l,md,y);
	ask(md,r,x);
}

vector<int> restore_permutation(int N, int w, int r) {
	int n = N;
	add(0,n);
	compile_set();
	ans.resize(n);
	string a = "";
	for(int i=0;i<n;i++)a += '0';
	ask(0,n,a);
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 384 KB grader returned WA
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 384 KB grader returned WA
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB grader returned WA
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 384 KB grader returned WA
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB grader returned WA
2 Halted 0 ms 0 KB -