# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1151213 | alexdd | Unscrambling a Messy Bug (IOI16_messy) | C++20 | 1 ms | 584 KiB |
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> brut(int n)
{
for(int i=1;i<=n;i++)
{
string s="";
for(int j=0;j<i;j++)
s.push_back('1');
for(int j=0;j<n-i;j++)
s.push_back('0');
add_element(s);
}
compile_set();
string cur="";
for(int i=0;i<n;i++)
cur.push_back('0');
vector<int> perm(n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(cur[j]=='0')
{
cur[j]='1';
if(check_element(cur))
{
perm[j]=i;
break;
}
cur[j]='0';
}
}
}
return perm;
}
std::vector<int> restore_permutation(int n, int w, int r)
{
if(n==8) return brut(n);
int cntb=0;
while((1<<cntb)<=n)
cntb++;
for(int i=0;i<cntb;i++)
{
string s="";
for(int j=0;j<=i;j++)
s.push_back('1');
for(int j=0;j<n-i-1;j++)
s.push_back('0');
add_element(s);
}
for(int i=cntb;i<n;i++)
{
string pref="";
for(int j=0;j<cntb;j++)
{
if((1<<j)&i) pref.push_back('1');
else pref.push_back('0');
}
string suff="";
for(int j=cntb;j<n;j++)
{
if(j==i) suff.push_back('0');
else suff.push_back('1');
}
add_element(pref+suff);
for(int j=cntb-1;j>=0;j--)
{
if(pref[j]=='1')
{
pref[j]='0';
add_element(pref+suff);
}
}
}
compile_set();
string cur="";
for(int i=0;i<n;i++)
cur.push_back('0');
vector<int> mici(cntb),sol(n);
vector<bool> ismic(n,0);
for(int i=0;i<cntb;i++)
{
for(int j=0;j<n;j++)
{
if(cur[j]=='0')
{
cur[j]='1';
if(check_element(cur))
{
mici[i]=j;
sol[j]=i;
ismic[j]=1;
//cout<<i<<" "<<j<<" mic\n";
break;
}
cur[j]='0';
}
}
}
for(int i=cntb;i<n;i++)
{
string s="";
int cur=cntb;
for(int j=0;j<n;j++)
{
if(ismic[j]) s.push_back('0');
else
{
if(cur==i) s.push_back('0');
else s.push_back('1');
cur++;
}
}
assert(check_element(s));
int sum=0;
for(int j=0;j<cntb;j++)
{
s[mici[j]]='1';
if(check_element(s))
{
sum += (1<<j);
}
else
s[mici[j]]='0';
}
//cerr<<i<<" "<<sum<<" zzz\n";
sol[i]=sum;
}
return sol;
}
/*
4 16 16
2 1 3 0
*/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |