제출 #1357854

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


#include "messy.h"
using namespace std;
vector<string>v;
int ans[257];
void getall(string str,int l,int r){
	if(l==r) return;
	int m=(l+r)/2;
	for(int i=m+1;i<=r;i++) str[i-1]='0',str[i]='1',v.push_back(str),add_element(str);
	str[r]='0';
	for(int i=l;i<=m;i++) str[i]='1';
	getall(str,m+1,r);
	for(int i=l;i<=m;i++) str[i]='0';
	for(int i=m+1;i<=r;i++) str[i]='1';
	getall(str,l,m);
}
void cheq(string str,int l,int r,set<int>se){
//	cout<<l<<' '<<r<<" | ";
//	for(auto it=se.begin();it!=se.end();it++) cout<<*it<<' ';
//	cout<<"\n";
	set<int>rs;
	if(l==r) {
		ans[l]=*se.begin();
		return ;
	}
	int m=(l+r)/2;
	for(auto it=se.begin();it!=se.end();it++){
		str[*it]='1';
		if(check_element(str)){
			rs.insert(*it);
		}
		str[*it]='0';
	}
	for(auto it=rs.begin();it!=rs.end();it++){
		se.erase(*it);
		str[*it]='1';
	}
	cheq(str,l,m,se);
	for(auto it=rs.begin();it!=rs.end();it++){
		str[*it]='0';
	}
	for(auto it=se.begin();it!=se.end();it++){
		str[*it]='1';
	}
	cheq(str,m+1,r,rs);
}
vector<int> restore_permutation(int n, int w, int r) {
	string bum="";
	for(int i=0;i<n;i++) bum+='0';
	getall(bum,0,n-1);
//	for(int i=0;i<v.size();i++){
//		cout<<v[i]<<"\n";
//	}
	compile_set();
	set<int> temp;
	for(int i=0;i<n;i++) temp.insert(i);
//	for(in)
	cheq(bum,0,n-1,temp);
	vector<int>aa;
	int aans[257];
	for(int i=0;i<n;i++) aans[ans[i]]=i;
	for(int i=0;i<n;i++) aa.push_back(aans[i]);
	return aa;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…