# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1154352 | AlgorithmWarrior | Unscrambling a Messy Bug (IOI16_messy) | C++20 | 1 ms | 580 KiB |
#include <vector>
#include <cstdio>
#include <string>
#include <set>
#include <cstdlib>
#include <iostream>
#include "messy.h"
using namespace std;
vector<int> restore_permutation(int n, int w, int r) {
vector<int>answer(n);
string sir;
int i,j;
for(i=0;i<n;++i)
sir.push_back('0');
if(w<r){
for(i=0;i<n;++i){
sir[i]='1';
add_element(sir);
}
compile_set();
for(i=0;i<n;++i)
sir[i]='0';
for(i=0;i<n;++i){
bool gasit=0;
for(j=0;!gasit;++j)
if(sir[j]=='0'){
sir[j]='1';
if(check_element(sir)){
gasit=1;
answer[j]=i;
}
else
sir[j]='0';
}
}
}
else{
sir[n-1]='1';
add_element(sir);
sir[n-1]='0';
for(i=0;i<n-2;++i){
sir[i]='1';
for(j=i+1;j<n;++j){
sir[j]='1';
add_element(sir);
sir[j]='0';
}
}
compile_set();
for(i=0;i<n;++i)
sir[i]='0';
for(i=0;i<n-2;++i){
vector<int>pos;
for(j=0;j<n;++j)
if(sir[j]=='0')
pos.push_back(j);
int gasit=-1;
for(j=0;j<(int)pos.size()-2 && gasit==-1;j+=2){
sir[pos[j]]='1';
sir[pos[j+1]]='1';
if(check_element(sir)){
sir[pos[j+1]]='0';
sir[pos[pos.size()-1]]='1';
if(check_element(sir))
gasit=pos[j];
else
gasit=pos[j+1];
sir[pos[pos.size()-1]]='0';
sir[pos[j]]='0';
}
else{
sir[pos[j]]='0';
sir[pos[j+1]]='0';
}
}
if(gasit==-1){
if(j==(int)pos.size()-2){
sir[pos[0]]='1';
sir[pos[j]]='1';
if(check_element(sir))
gasit=pos[j];
else
gasit=pos[j+1];
sir[pos[0]]='0';
sir[pos[j]]='0';
}
else
gasit=pos[j];
}
answer[gasit]=i;
sir[gasit]='1';
}
int pos1=-1,pos2=-1;
for(i=0;i<n;++i)
if(sir[i]=='0'){
if(pos1==-1)
pos1=i;
else
pos2=i;
}
for(i=0;i<n;++i)
if(i==pos1)
sir[i]='1';
else
sir[i]='0';
if(check_element(sir)){
answer[pos1]=n-1;
answer[pos2]=n-2;
}
else{
answer[pos1]=n-2;
answer[pos2]=n-1;
}
}
return answer;
}
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... |