제출 #391966

#제출 시각아이디문제언어결과실행 시간메모리
391966kshitij_sodaniSwap (BOI16_swap)C++14
21 / 100
1082 ms332 KiB
//#pragma GCC optimize("Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; typedef long long llo; #define mp make_pair #define pb push_back #define a first #define b second llo n; llo it[200001]; llo ind[200001]; vector<llo> ans; vector<pair<llo,llo>> kk; void brute(llo ind){ if(ind*2>n){ vector<llo> ss; for(llo i=1;i<=n;i++){ ss.pb(it[i]); } ans=min(ans,ss); } else if(ind*2==n){ llo x=it[ind]; llo y=it[ind*2]; llo xx=min(x,y); if(xx==x){ brute(ind+1); } else{ swap(it[ind],it[ind*2]); brute(ind+1); } it[ind]=x; it[ind*2]=y; } else{ llo x=it[ind]; llo y=it[ind*2]; llo z=it[ind*2+1]; llo xx=min(x,y); xx=min(xx,z); if(xx==x){ brute(ind+1); } else if(xx==y){ swap(it[ind],it[ind*2]); brute(ind+1); } else{ //if(x>y){ // kk.pb({y,z}); swap(it[ind],it[ind*2+1]); brute(ind+1); it[ind]=x; it[ind*2]=y; it[ind*2+1]=z; /*} else{*/ swap(it[ind],it[ind*2]); swap(it[ind],it[ind*2+1]); brute(ind+1); //} } it[ind]=x; it[ind*2]=y; it[ind*2+1]=z; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n; for(llo i=0;i<n;i++){ cin>>it[i+1]; ans.pb(it[i+1]); } brute(1); //vector<llo> ans2=ans; /*for(auto j:ans){ cout<<j<<","; } cout<<endl;*/ /*for(llo j=0;j<(1<<kk.size());j++){ vector<llo> cur=ans; for(llo i=0;i<n;i++){ ind[ans[i]]=i; } for(llo i=0;i<kk.size();i++){ if((1LL<<i)&j){ swap(cur[ind[kk[i].a]],cur[ind[kk[i].b]]); swap(ind[kk[i].a],ind[kk[i].b]); } else{ } } ans2=min(ans2,cur); } */ /*for(auto j:kk){ cout<<j.a<<":"<<j.b<<endl; }*/ for(auto j:ans){ cout<<j<<" "; } cout<<endl; //cout<<ans<<endl; return 0; }
#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...