Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///Alen Antonelli https://www.hackerrank.com/contests/fifa-world-cup-2018-croatia-vs-argentina/challenges/turnir-coci-20162017-round-6
- ///http://hsin.hr/coci/archive/2016_2017/contest6_tasks.pdf
- #include <iostream>
- #include <vector>
- #include <stack>
- #include <map>
- #include <math.h>
- #include <algorithm>
- using namespace std;
- int main()
- {
- vector<int> v;
- int n, t;
- cin>>n;
- t=pow(2,n);
- v.resize(t);
- for(int i=0; i<t; i++)
- cin>>v[i];
- vector<int> va = v;
- sort( va.begin(), va.end() );
- map<int,int> mapa;
- for(int i=0; i<t; i++)
- mapa[ va[i] ]=i;
- for(int i=0; i<t; i++)
- cout<<v[i]<<" ";
- cout<<endl<<endl;
- for(int i=0; i<t; i++)
- cout<<va[i]<<" ";
- cout<<endl;
- vector<int> va2;
- stack<int> p;
- p.push(va[0]);
- for(int k=0; k<n; k++)
- {
- for(int i=0; i<t; i+=2)
- va2.push_back( max(va[i],va[i+1]) );
- p.push(va2[0]);
- for(int i=0; i<t/2; i++)
- cout<<va2[i]<<" ";
- cout<<endl;
- va = va2;
- va2.clear();
- t= t/2;
- }
- cout<<endl;
- t=pow(2,n);
- vector<int> r (t, -1);
- for (int i=0; i<=n; i++)
- {
- int num = p.top();
- int pos = mapa[num];
- if (r[pos]==-1)
- r[pos] = i;
- p.pop();
- cout<<num<<"->"<<pos<<" ";
- }
- cout<<endl;
- for(int i=0; i<t; i++)
- {
- if (r[i]==-1)
- cout<<"N ";
- else cout<<r[i]<<" ";
- }
- for(int i=1; i<t; i++)
- if (r[i]==-1)
- r[i]=r[i-1];
- cout<<endl;
- for(int i=0; i<t; i++)
- cout<<r[i]<<" ";
- cout<<endl<<endl;
- for(int i=0; i<t; i++)
- cout<<v[i]<<" ";
- cout<<endl;
- for(int i=0; i<t; i++)
- {
- int num = v[i];
- int pos = mapa[num];
- cout<<r[pos]<<" ";
- }
- cout<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement