제출 #247151

#제출 시각아이디문제언어결과실행 시간메모리
247151kshitij_sodaniUnscrambling a Messy Bug (IOI16_messy)C++14
38 / 100
9 ms384 KiB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
//#define endl '\n'
mt19937 rng;
void add_element(string x);
bool check_element(string x);
void compile_set();
//#include "messy.h"

std::vector<int> restore_permutation(int n, int w, int r) {
	rng=mt19937(chrono::steady_clock::now().time_since_epoch().count());

	for(int i=0;i<n;i++){
		string s="";
		for(int j=0;j<i+1;j++){
			s+="1";
		}
		for(int j=i+1;j<n;j++){
			s+="0";
		}
	//	cout<<s<<endl;
		 add_element(s);
	}
	compile_set();
	set<int> cur;
	for(int j=0;j<n;j++){
		cur.insert(j);
	}
	set<int> cur2;
	vector<int> ans;
	for(int i=0;i<n;i++){
		ans.pb(0);
	}
	for(int ii=0;ii<n;ii++){
		vector<int> kk;
		for(auto j:cur){
			kk.pb(j);
		}
		shuffle(kk.begin(),kk.end(),rng);
		for(auto j:kk){
			string s="";
			for(int i=0;i<n;i++){
				if(i==j or cur2.find(i)!=cur2.end()){
					s+="1";
				}
				else{
					s+="0";
				}
			}
		//	cout<<s<<endl;
			if(check_element(s)){
				ans[j]=ii;
		//		ans.pb(j);
				cur.erase(j);
				cur2.insert(j);
				break;
			}
		}
	}
  

  //  check_element("0");
    return ans;
}

/*int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);



	return 0;
}
*/
/*
g++  -o aa -O2 messy.cpp grader.cpp -std=c++14

*/
#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...