Submission #241787

#TimeUsernameProblemLanguageResultExecution timeMemory
241787crossing0verUnscrambling a Messy Bug (IOI16_messy)C++17
0 / 100
2094 ms512 KiB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;
int X[500],L[500],R[500],IN[500];
vector<int> perm;
map<string,bool> mp;
/*void add_element(string s) {
	mp[s] = 1;
}
void compile_set() {
	for (int i = 0; i < perm.size(); i++) perm[i] = i;
	random_shuffle(perm.begin(),perm.end());
}
bool check_element(string s) {
	return mp[s];
}*/
vector<int> restore_permutation(int n, int w, int r) {
  srand(time(NULL));
	int lg = log2(n);
	perm.resize(n);
	int l = -1;
	string s(n,'0');
	for (int val = n/2;val;val/=2) {
		for (int i = l+1; i < n; i++) {
			if ( (i & ( val) ) == 0)	{
				s[i] = '1';
				add_element(s);
				cout << s <<'\n';
				s[i] = '0';
			}
		}
		s[++l] = '1';
	}
    compile_set();
    for (int i = 0;i < n; i++) s[i] = '0';
    vector<int> st;
    vector<int> not1;
    for (int i = 0; i < n; i++) not1.push_back(i);
    int val = n/2;
    int cnt = 0;
    for (int i = 0; i < n; i++)
    for (int j = 1; j < n; j*=2) X[i]^=j;
    while (val) {
    	vector<int> v;
    for (int i = 0; i < n; i++) {
    	if (IN[i]) continue;
    	s[i] = '1';
    	if ( check_element(s)){
    		v.push_back(i);
    		X[i]^=val;
		}	
    	s[i] = '0';
	}
	cnt++;
	vector<bool> vis(n+1);
	while (not1.size() > 1) {
      bool flag = 0;
		int pos = rand()%not1.size();
		for (int i : v) {
			int t = 5;
			int g = 0;
          while(t--) {
            
			int pos = rand()%not1.size();
			s[not1[pos]] ='1';
			s[i]   = '1';
			if (check_element(s)) {
              g++;
			}
			if (g >= 2){
				flag = 1;
				s[i] = '1';
				IN[i] = 1;
				not1.erase(find(not1.begin(),not1.end(),i));
			}
            s[not1[pos]] = '0';
            if (flag) break;
            s[i] = '0';
          }
          if (flag) break;
		}
	if (flag) break;
	}
      val/=2;
	}
	vector<int> ans;
   for (int i = 0;i < n; i++)
   		ans.push_back(X[i]);
   	return ans;
   	
}

Compilation message (stderr)

messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:58:7: warning: unused variable 'pos' [-Wunused-variable]
   int pos = rand()%not1.size();
       ^~~
messy.cpp:19:6: warning: unused variable 'lg' [-Wunused-variable]
  int lg = log2(n);
      ^~
#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...