#include "messy.h"
#include "bits/stdc++.h"
using namespace std;
#define mkp make_pair
map<pair<int,int>,vector<int> > mp;
vector<int> tmp,tmp2;
vector<int> restore_permutation(int n, int w, int r) {//length n, rest don't matter
string s="";
for(int x=0;x<n;x++)s+="1";
int n2=n;//current set where you need find which parts is left half and which parts is right half...
while(n2>1){
for(int i=0;i<n;i+=n2){
for(int j=0;j<n2;j++){
s[i+j]='0';
}
for(int j=0;j<n2/2;j++){
s[i+j]='1';
//cout<<s<<'\n';
add_element(s);
s[i+j]='0';
}
for(int j=0;j<n2;j++){
s[i+j]='1';
}
}
n2/=2;
}
compile_set();
n2=n;
for(int x=0;x<n;x++)tmp.push_back(x);
mp[mkp(0,n-1)]=tmp;
while(n2>1){
for(int i=0;i<n;i+=n2){
tmp.clear();tmp2.clear();
for(int j=0;j<mp[mkp(i,i+n2-1)].size();j++){
s[mp[mkp(i,i+n2-1)][j]]='0';
}
for(int j=0;j<mp[mkp(i,i+n2-1)].size();j++){
s[mp[mkp(i,i+n2-1)][j]]='1';
//cout<<"here:"<<s<<'\n';
if(check_element(s)){
tmp.push_back(mp[mkp(i,i+n2-1)][j]);//left half
}else tmp2.push_back(mp[mkp(i,i+n2-1)][j]);//right half...
s[mp[mkp(i,i+n2-1)][j]]='0';
}
mp[mkp(i,i+(n2/2)-1)]=tmp;
mp[mkp(i+(n2/2),i+n2-1 )]=tmp2;
for(int j=0;j<mp[mkp(i,i+n2-1)].size();j++){
s[mp[mkp(i,i+n2-1)][j]]='1';
}
}
n2/=2;
}
//check_element("0");
vector<int> ans;
for(int x=0;x<n;x++)ans.push_back(0);
for(auto it=mp.begin();it!=mp.end();it++){
if(it->first.first==it->first.second){
if(it->second.size()==0){
//cerr<<"LEGIT BEEG GAYY SIAH!!\n";
}
//ans[it->first.first]=it->second[0];
ans[it->second[0]]=it->first.first;
}
}
return ans;
}
/*
4 100 100
2 1 3 0
*/
Compilation message
messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:36:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=0;j<mp[mkp(i,i+n2-1)].size();j++){
~^~~~~~~~~~~~~~~~~~~~~~~~~
messy.cpp:39:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=0;j<mp[mkp(i,i+n2-1)].size();j++){
~^~~~~~~~~~~~~~~~~~~~~~~~~
messy.cpp:49:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j=0;j<mp[mkp(i,i+n2-1)].size();j++){
~^~~~~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
256 KB |
n = 8 |
2 |
Correct |
0 ms |
256 KB |
n = 8 |
3 |
Correct |
0 ms |
256 KB |
n = 8 |
4 |
Correct |
0 ms |
256 KB |
n = 8 |
5 |
Correct |
0 ms |
256 KB |
n = 8 |
6 |
Correct |
0 ms |
256 KB |
n = 8 |
7 |
Correct |
0 ms |
384 KB |
n = 8 |
8 |
Correct |
0 ms |
256 KB |
n = 8 |
9 |
Correct |
0 ms |
256 KB |
n = 8 |
10 |
Correct |
1 ms |
256 KB |
n = 8 |
11 |
Correct |
0 ms |
256 KB |
n = 8 |
12 |
Correct |
0 ms |
256 KB |
n = 8 |
13 |
Correct |
0 ms |
256 KB |
n = 8 |
14 |
Correct |
0 ms |
256 KB |
n = 8 |
15 |
Correct |
0 ms |
256 KB |
n = 8 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
384 KB |
n = 32 |
2 |
Correct |
1 ms |
384 KB |
n = 32 |
3 |
Correct |
1 ms |
384 KB |
n = 32 |
4 |
Correct |
1 ms |
384 KB |
n = 32 |
5 |
Correct |
1 ms |
384 KB |
n = 32 |
6 |
Correct |
1 ms |
384 KB |
n = 32 |
7 |
Correct |
0 ms |
384 KB |
n = 32 |
8 |
Correct |
0 ms |
384 KB |
n = 32 |
9 |
Correct |
1 ms |
384 KB |
n = 32 |
10 |
Correct |
1 ms |
384 KB |
n = 32 |
11 |
Correct |
1 ms |
384 KB |
n = 32 |
12 |
Correct |
1 ms |
384 KB |
n = 32 |
13 |
Correct |
0 ms |
384 KB |
n = 32 |
14 |
Correct |
1 ms |
384 KB |
n = 32 |
15 |
Correct |
1 ms |
384 KB |
n = 32 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
384 KB |
n = 32 |
2 |
Correct |
0 ms |
384 KB |
n = 32 |
3 |
Correct |
0 ms |
384 KB |
n = 32 |
4 |
Correct |
1 ms |
384 KB |
n = 32 |
5 |
Correct |
1 ms |
384 KB |
n = 32 |
6 |
Correct |
1 ms |
384 KB |
n = 32 |
7 |
Correct |
1 ms |
384 KB |
n = 32 |
8 |
Correct |
1 ms |
384 KB |
n = 32 |
9 |
Correct |
1 ms |
384 KB |
n = 32 |
10 |
Correct |
1 ms |
384 KB |
n = 32 |
11 |
Correct |
1 ms |
384 KB |
n = 32 |
12 |
Correct |
1 ms |
384 KB |
n = 32 |
13 |
Correct |
1 ms |
384 KB |
n = 32 |
14 |
Correct |
1 ms |
384 KB |
n = 32 |
15 |
Correct |
1 ms |
384 KB |
n = 32 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
512 KB |
n = 128 |
2 |
Correct |
2 ms |
512 KB |
n = 128 |
3 |
Correct |
2 ms |
512 KB |
n = 128 |
4 |
Correct |
3 ms |
512 KB |
n = 128 |
5 |
Correct |
2 ms |
512 KB |
n = 128 |
6 |
Correct |
2 ms |
512 KB |
n = 128 |
7 |
Correct |
2 ms |
512 KB |
n = 128 |
8 |
Correct |
2 ms |
512 KB |
n = 128 |
9 |
Correct |
2 ms |
512 KB |
n = 128 |
10 |
Correct |
2 ms |
512 KB |
n = 128 |
11 |
Correct |
2 ms |
512 KB |
n = 128 |
12 |
Correct |
2 ms |
512 KB |
n = 128 |
13 |
Correct |
2 ms |
512 KB |
n = 128 |
14 |
Correct |
2 ms |
512 KB |
n = 128 |
15 |
Correct |
2 ms |
512 KB |
n = 128 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
512 KB |
n = 128 |
2 |
Correct |
2 ms |
512 KB |
n = 128 |
3 |
Correct |
2 ms |
512 KB |
n = 128 |
4 |
Correct |
2 ms |
512 KB |
n = 128 |
5 |
Correct |
2 ms |
512 KB |
n = 128 |
6 |
Correct |
2 ms |
512 KB |
n = 128 |
7 |
Correct |
2 ms |
512 KB |
n = 128 |
8 |
Correct |
2 ms |
512 KB |
n = 128 |
9 |
Correct |
2 ms |
512 KB |
n = 128 |
10 |
Correct |
2 ms |
512 KB |
n = 128 |
11 |
Correct |
2 ms |
512 KB |
n = 128 |
12 |
Correct |
2 ms |
512 KB |
n = 128 |
13 |
Correct |
2 ms |
512 KB |
n = 128 |
14 |
Correct |
2 ms |
512 KB |
n = 128 |
15 |
Correct |
2 ms |
512 KB |
n = 128 |