fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long int ll;
  5.  
  6. struct info
  7. {
  8. ll x;
  9. } temp,temp2;
  10.  
  11. bool operator <(struct info a, struct info b)
  12. {
  13. if(a.x>b.x) return true;
  14. else return false;
  15. }
  16.  
  17. set<struct info> S;
  18. set<struct info> :: iterator it;
  19.  
  20. int main(void)
  21. {
  22. ll n;
  23. cin >> n;
  24. for(ll i = 1; i <= n; i++)
  25. {
  26. ll v;
  27. cin >>v;
  28. temp.x = v;
  29. S.insert(temp);
  30. }
  31. while(1)
  32. {
  33. it = S.begin();
  34. int flag = 0;
  35. temp = *it;
  36. ll div = 2;
  37. ll prev_size = S.size();
  38. for(ll i = 1; ; i++)
  39. {
  40. ll v = temp.x / div;
  41. temp2.x = v;
  42. if(temp2.x == 0) break;
  43. S.insert(temp2);
  44. ll new_size = S.size();
  45. if(new_size > prev_size)
  46. {
  47. flag = 1;
  48. break;
  49. }
  50. div *= 2;
  51. }
  52. if(flag == 0) break;
  53. if(flag)
  54. {
  55. S.erase(it);
  56. }
  57.  
  58. }
  59. for(it = S.begin(); it != S.end(); it++)
  60. {
  61. temp = *it;
  62. cout <<temp.x << endl;
  63. }
  64.  
  65. return 0;
  66. }
  67.  
Time limit exceeded #stdin #stdout 5s 3472KB
stdin
Standard input is empty
stdout
Standard output is empty