Submission #3390402
Source Code Expand
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define fi first #define se second #define mp make_pair #define pb push_back typedef long long ll; typedef pair<int,int> ii; typedef vector<int> vi; typedef unsigned long long ull; typedef long double ld; typedef tree<ii, null_type, less<ii>, rb_tree_tag, tree_order_statistics_node_update> pbds; int a[(1<<18)+10]; vi get_rank(vi V) { int n = V.size(); if(n==1) return {V[0]}; vi L,R; for(int i=0;i<n;i+=2) { L.pb(min(V[i],V[i+1])); R.pb(max(V[i],V[i+1])); } vi rankL = get_rank(L); vi rankR = get_rank(R); for(int v:rankR) rankL.pb(v); return rankL; } void brute() { vi perm; int n = 3; for(int i=0;i<(1<<n);i++) perm.pb(i); do { cerr<<"INITIAL :\n"; for(int v:perm) { cerr<<v<<' '; } cerr<<'\n'; vi rankings = get_rank(perm); cerr<<"RANKINGS :\n"; for(int v:rankings) { cerr<<v<<' '; } cerr<<'\n'; bool pos=1; for(int i=0;i<n;i++) { for(int j=0;j<(1<<n);j++) { int u = j; int v = j^(1<<i); if((u<v)^(rankings[u]<rankings[v])){pos=0; break;} } if(!pos) break; } if(!pos) { for(int v:perm) cout<<v<<' '; return ; } }while(next_permutation(perm.begin(),perm.end())); } bool visited[(1<<18)+12]; int ranking[(1<<18)+12]; int n; set<int> S; int dfs(int u, int fixed=-1) { if(visited[u]) return ranking[u]; visited[u]=1; int mx = -1; for(int i=0;i<n;i++) { if(u&(1<<i)) { int res = dfs(u^(1<<i)); mx=max(mx,res); } } if(fixed!=-1) { if(fixed<=mx){cout<<"NO\n"; exit(0);} if(S.find(fixed)==S.end()){cout<<"NO\n"; exit(0);} S.erase(fixed); ranking[u]=fixed; return fixed; } auto it = S.upper_bound(mx); if(it==S.end()){cout<<"NO\n"; exit(0);} ranking[u]=(*it); S.erase(ranking[u]); return ranking[u]; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); //freopen("full-tournament.in","r",stdin); //brute(); return 0; cin>>n; for(int i=0;i<(1<<n);i++) { cin>>a[i]; a[i]--; } if(a[0]>=1){cout<<"NO\n"; return 0;} memset(ranking,-1,sizeof(ranking)); vector<ii> vec; for(int i=0;i<(1<<n);i++) { if(a[i]>=0) vec.pb(mp(a[i],i)); S.insert(i); } vec.pb(mp(0,0)); vec.pb(mp((1<<n)-1,(1<<n)-1)); sort(vec.begin(),vec.end()); vec.erase(unique(vec.begin(),vec.end()),vec.end()); for(int i=0;i<vec.size();i++) { int needpos = vec[i].fi; int id = vec[i].se; if(ranking[id]!=-1){cout<<"NO\n"; return 0;} /* for(int i=0;i<(1<<n);i++) { cerr<<ranking[i]+1<<' '; } cerr<<"NEEDPOS "<<needpos<<" ID "<<id<<'\n'; */ dfs(id,needpos); } /* for(int i=0;i<(1<<n);i++) { cerr<<ranking[i]+1<<' '; } cerr<<'\n'; */ /* bool ss=1; for(int i=0;i<n;i++) { for(int j=0;j<(1<<n);j++) { int u = j; int v = j^(1<<i); if((u<v)^(ranking[u]<ranking[v])){cerr<<"FAIL "<<u<<' '<<v<<' '<<ranking[u]<<' '<<ranking[v]<<'\n'; return 0; ss=0; break;} } if(!ss) break; } */ vi res; res.pb(0); for(int i=0;i<n;i++) { vi nw; for(int v:res) { nw.pb(v); nw.pb(v+(1<<i)); } res=nw; } for(int i=0;i<(1<<n);i++) res[i]=ranking[res[i]]; cout<<"YES\n"; for(int i=0;i<(1<<n);i++) { cout<<res[i]+1; if(i+1<(1<<n)) cout<<' '; } cout<<'\n'; }
Submission Info
Submission Time | |
---|---|
Task | I - Full Tournament |
User | zscoder |
Language | C++14 (GCC 5.4.1) |
Score | 1600 |
Code Size | 3447 Byte |
Status | AC |
Exec Time | 231 ms |
Memory | 16880 KB |
Judge Result
Set Name | sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1600 / 1600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
sample | sample-01.txt, sample-02.txt |
All | sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, 01-36.txt, 01-37.txt, 01-38.txt, 01-39.txt, 01-40.txt, 01-41.txt, 01-42.txt, 01-43.txt, 01-44.txt, 01-45.txt, 01-46.txt, 01-47.txt, 01-48.txt, 01-49.txt, 01-50.txt, 01-51.txt, 01-52.txt, 01-53.txt, 01-54.txt, 01-55.txt, 01-56.txt, 01-57.txt, 01-58.txt, 01-59.txt, 01-60.txt, 01-61.txt, 01-62.txt, 01-63.txt, 01-64.txt, 01-65.txt, 01-66.txt, 01-67.txt, 01-68.txt, 01-69.txt, 01-70.txt, 01-71.txt, 01-72.txt, 01-73.txt, 01-74.txt, 01-75.txt, 01-76.txt, 01-77.txt, 01-78.txt, 01-79.txt, 01-80.txt, 01-81.txt, 01-82.txt, 01-83.txt, 01-84.txt, 01-85.txt, 01-86.txt, 01-87.txt, 01-88.txt, 01-89.txt, 01-90.txt, sample-01.txt, sample-02.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 2 ms | 1280 KB |
01-02.txt | AC | 2 ms | 1280 KB |
01-03.txt | AC | 2 ms | 1280 KB |
01-04.txt | AC | 5 ms | 1780 KB |
01-05.txt | AC | 175 ms | 15100 KB |
01-06.txt | AC | 175 ms | 15100 KB |
01-07.txt | AC | 177 ms | 15100 KB |
01-08.txt | AC | 179 ms | 15100 KB |
01-09.txt | AC | 174 ms | 15104 KB |
01-10.txt | AC | 177 ms | 15100 KB |
01-11.txt | AC | 185 ms | 15352 KB |
01-12.txt | AC | 196 ms | 15860 KB |
01-13.txt | AC | 186 ms | 15988 KB |
01-14.txt | AC | 190 ms | 15604 KB |
01-15.txt | AC | 179 ms | 15228 KB |
01-16.txt | AC | 188 ms | 15984 KB |
01-17.txt | AC | 194 ms | 16496 KB |
01-18.txt | AC | 195 ms | 16368 KB |
01-19.txt | AC | 184 ms | 16752 KB |
01-20.txt | AC | 178 ms | 16880 KB |
01-21.txt | AC | 184 ms | 16240 KB |
01-22.txt | AC | 181 ms | 16496 KB |
01-23.txt | AC | 194 ms | 15224 KB |
01-24.txt | AC | 194 ms | 15224 KB |
01-25.txt | AC | 166 ms | 15224 KB |
01-26.txt | AC | 165 ms | 15224 KB |
01-27.txt | AC | 165 ms | 15224 KB |
01-28.txt | AC | 165 ms | 15224 KB |
01-29.txt | AC | 168 ms | 15096 KB |
01-30.txt | AC | 170 ms | 15096 KB |
01-31.txt | AC | 166 ms | 15096 KB |
01-32.txt | AC | 168 ms | 15096 KB |
01-33.txt | AC | 167 ms | 15096 KB |
01-34.txt | AC | 164 ms | 15096 KB |
01-35.txt | AC | 170 ms | 15352 KB |
01-36.txt | AC | 149 ms | 14972 KB |
01-37.txt | AC | 147 ms | 14976 KB |
01-38.txt | AC | 157 ms | 15228 KB |
01-39.txt | AC | 155 ms | 14972 KB |
01-40.txt | AC | 231 ms | 15352 KB |
01-41.txt | AC | 156 ms | 15096 KB |
01-42.txt | AC | 164 ms | 15224 KB |
01-43.txt | AC | 158 ms | 15100 KB |
01-44.txt | AC | 161 ms | 15224 KB |
01-45.txt | AC | 152 ms | 14972 KB |
01-46.txt | AC | 172 ms | 15352 KB |
01-47.txt | AC | 198 ms | 16628 KB |
01-48.txt | AC | 196 ms | 16628 KB |
01-49.txt | AC | 180 ms | 16628 KB |
01-50.txt | AC | 180 ms | 16628 KB |
01-51.txt | AC | 181 ms | 16628 KB |
01-52.txt | AC | 180 ms | 16628 KB |
01-53.txt | AC | 183 ms | 15100 KB |
01-54.txt | AC | 182 ms | 15100 KB |
01-55.txt | AC | 155 ms | 15100 KB |
01-56.txt | AC | 157 ms | 15100 KB |
01-57.txt | AC | 161 ms | 15100 KB |
01-58.txt | AC | 157 ms | 15100 KB |
01-59.txt | AC | 161 ms | 14972 KB |
01-60.txt | AC | 158 ms | 14972 KB |
01-61.txt | AC | 165 ms | 14972 KB |
01-62.txt | AC | 163 ms | 14972 KB |
01-63.txt | AC | 165 ms | 14972 KB |
01-64.txt | AC | 164 ms | 14972 KB |
01-65.txt | AC | 162 ms | 14972 KB |
01-66.txt | AC | 161 ms | 14972 KB |
01-67.txt | AC | 145 ms | 16496 KB |
01-68.txt | AC | 187 ms | 15100 KB |
01-69.txt | AC | 173 ms | 15224 KB |
01-70.txt | AC | 172 ms | 15352 KB |
01-71.txt | AC | 162 ms | 15096 KB |
01-72.txt | AC | 163 ms | 15100 KB |
01-73.txt | AC | 168 ms | 15100 KB |
01-74.txt | AC | 150 ms | 14972 KB |
01-75.txt | AC | 154 ms | 14972 KB |
01-76.txt | AC | 161 ms | 14972 KB |
01-77.txt | AC | 191 ms | 15608 KB |
01-78.txt | AC | 186 ms | 15608 KB |
01-79.txt | AC | 186 ms | 15352 KB |
01-80.txt | AC | 180 ms | 15608 KB |
01-81.txt | AC | 182 ms | 15352 KB |
01-82.txt | AC | 184 ms | 15352 KB |
01-83.txt | AC | 2 ms | 1280 KB |
01-84.txt | AC | 2 ms | 1408 KB |
01-85.txt | AC | 77 ms | 14844 KB |
01-86.txt | AC | 130 ms | 15100 KB |
01-87.txt | AC | 131 ms | 15100 KB |
01-88.txt | AC | 76 ms | 14720 KB |
01-89.txt | AC | 74 ms | 14720 KB |
01-90.txt | AC | 73 ms | 14720 KB |
sample-01.txt | AC | 2 ms | 1280 KB |
sample-02.txt | AC | 1 ms | 256 KB |