Advertisement
AlenAntonelli

Turnir

Jun 25th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. ///Alen Antonelli https://www.hackerrank.com/contests/fifa-world-cup-2018-croatia-vs-argentina/challenges/turnir-coci-20162017-round-6
  2. ///http://hsin.hr/coci/archive/2016_2017/contest6_tasks.pdf
  3. #include <iostream>
  4. #include <vector>
  5. #include <stack>
  6. #include <map>
  7. #include <math.h>
  8. #include <algorithm>
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13.     vector<int> v;
  14.     int n, t;
  15.    
  16.     cin>>n;
  17.     t=pow(2,n);
  18.     v.resize(t);
  19.    
  20.     for(int i=0; i<t; i++)
  21.         cin>>v[i];
  22.    
  23.     vector<int> va = v;
  24.     sort( va.begin(), va.end() );
  25.     map<int,int> mapa;
  26.     for(int i=0; i<t; i++)
  27.         mapa[ va[i] ]=i;
  28.    
  29.     for(int i=0; i<t; i++)
  30.         cout<<v[i]<<" ";
  31.     cout<<endl<<endl;
  32.     for(int i=0; i<t; i++)
  33.         cout<<va[i]<<" ";
  34.     cout<<endl;
  35.    
  36.     vector<int> va2;
  37.     stack<int> p;
  38.    
  39.     p.push(va[0]);
  40.     for(int k=0; k<n; k++)
  41.     {
  42.         for(int i=0; i<t; i+=2)
  43.             va2.push_back( max(va[i],va[i+1]) );
  44.         p.push(va2[0]);
  45.        
  46.         for(int i=0; i<t/2; i++)
  47.             cout<<va2[i]<<" ";
  48.         cout<<endl;
  49.        
  50.         va = va2;
  51.         va2.clear();
  52.         t= t/2;
  53.     }
  54.    
  55.     cout<<endl;
  56.    
  57.     t=pow(2,n);
  58.     vector<int> r (t, -1);
  59.     for (int i=0; i<=n; i++)
  60.     {
  61.         int num = p.top();
  62.         int pos = mapa[num];
  63.         if (r[pos]==-1)
  64.             r[pos] = i;
  65.         p.pop();
  66.         cout<<num<<"->"<<pos<<"  ";
  67.     }
  68.    
  69.     cout<<endl;
  70.     for(int i=0; i<t; i++)
  71.     {
  72.         if (r[i]==-1)
  73.             cout<<"N ";
  74.         else cout<<r[i]<<" ";
  75.     }
  76.        
  77.    
  78.     for(int i=1; i<t; i++)
  79.         if (r[i]==-1)
  80.             r[i]=r[i-1];
  81.    
  82.     cout<<endl;            
  83.     for(int i=0; i<t; i++)
  84.         cout<<r[i]<<" ";
  85.     cout<<endl<<endl;
  86.    
  87.     for(int i=0; i<t; i++)
  88.         cout<<v[i]<<" ";
  89.     cout<<endl;
  90.     for(int i=0; i<t; i++)
  91.     {
  92.         int num = v[i];
  93.         int pos = mapa[num];
  94.         cout<<r[pos]<<" ";
  95.     }
  96.     cout<<endl;
  97.  
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement