This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
typedef tuple<ll,ll,ll> PP;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<P> vp;
typedef vector<bool> vb;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define REP(i,k,n) for(ll i=(ll)(k);i<(ll)(n);i++)
#define fi first
#define se second
#define all(a) a.begin(),a.end()
#define rosrt(a) {sort(all(a));reverse(all(a));}
#define dupli(a) {sort(all(a));a.erase(unique(all(a)),a.end());}
#define lb(v,k) (lower_bound(all(v),k)-v.begin())
#define pb emplace_back
template<class T> bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;}
template<class T> bool chmax(T&a,T b){if(a<b){a=b;return true;}return false;}
template<class T> void out(T a){cout<<a<<'\n';}
template<class T> void outv(T v){rep(i,v.size()){if(i)cout<<' ';cout<<v[i];};cout<<'\n';}
template<class T> void outvv(T v){for(auto x:v)outv(x);}
template<class T> void outp(T p){cout<<'('<<p.fi<<','<<p.se<<')'<<endl;}
template<class T> void outvp(T v){for(auto x:v)cout<<'('<<x.fi<<','<<x.se<<')';cout<<endl;}
#include "messy.h"
vector<int> restore_permutation(int n,int w,int r){
vector<int> ask(n);
rep(i,n)ask[i]=i;
function<void(vector<int>)> dfs=[&](vector<int> v){
if(v.size()==1)return;
string s;
rep(i,n)s+='1';
rep(i,v.size())s[v[i]]='0';
rep(i,v.size()/2){
s[v[i]]='1';
add_element(s);
s[v[i]]='0';
}
vector<int> a,b;
rep(i,v.size()/2)a.pb(v[i]);
REP(i,v.size()/2,v.size())b.pb(v[i]);
dfs(a);dfs(b);
};dfs(ask);
vector<int> ans(n);
compile_set();
function<void(vector<int>,vector<int>)> dfs2=[&](vector<int> v,vector<int> to){
// outv(to);outv(v);
if(v.size()==1){
ans[to[0]]=v[0];return;
}
string s;
rep(i,n)s+='1';
rep(i,v.size())s[to[i]]='0';
vector<int> ato,bto,a,b;
rep(i,v.size()){
s[to[i]]='1';
if(check_element(s))ato.pb(to[i]);
else bto.pb(to[i]);
s[to[i]]='0';
}
rep(i,v.size()/2)a.pb(v[i]);
REP(i,v.size()/2,v.size())b.pb(v[i]);
// outv(ato);outv(bto);
dfs2(a,ato);dfs2(b,bto);
};dfs2(ask,ask);
return ans;
}
# | 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... |