Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. struct opis{
  7. unsigned int npanstwa;
  8. int wspolczynnik;
  9. };
  10.  
  11. unsigned int najmniejszy_numer_panstwa(vector<opis> rowne)
  12. {
  13. unsigned int najmniejszy=1231314124;
  14. for(auto it : rowne)
  15. {
  16. if(najmniejszy > it.npanstwa)
  17. najmniejszy = it.npanstwa;
  18. }
  19. return najmniejszy;
  20. }
  21.  
  22. unsigned int Hoare(int *dane, int n)//n <=rozmiarowi wektora mniejszych, czyszcze clear rownych wiekszych i dane clear sharing to fit
  23. {
  24. int mniejsze[n]; //return hoare vector mniejszych n
  25. int wieksze[n];
  26. int rowne[n];
  27. int i=rand()%dane.size() ;
  28. for( auto it : dane)
  29. {
  30. if(dane.data()[i].wspolczynnik < it.wspolczynnik)
  31. {
  32. wieksze.push_back(it);
  33. }
  34. else if(dane.data()[i].wspolczynnik == it.wspolczynnik)
  35. {
  36. rowne.push_back(it);
  37. }
  38. else
  39. {
  40. mniejsze.push_back(it);
  41. }
  42. }
  43. if(n <= mniejsze.size())
  44. {
  45. wieksze.clear();
  46. rowne.clear();
  47. dane.clear();
  48. wieksze.shrink_to_fit();
  49. rowne.shrink_to_fit();
  50. dane.shrink_to_fit();
  51. return Hoare(mniejsze, n);
  52. }
  53. if(n > mniejsze.size() && n <= (mniejsze.size()+rowne.size()))
  54. {
  55. return najmniejszy_numer_panstwa(rowne);
  56. }
  57.  
  58. if(n > (mniejsze.size()+rowne.size()))
  59. {
  60. n=(n-(mniejsze.size()+rowne.size()));
  61. mniejsze.clear();
  62. rowne.clear();
  63. dane.clear();
  64. mniejsze.shrink_to_fit();
  65. rowne.shrink_to_fit();
  66. dane.shrink_to_fit();
  67. return Hoare(wieksze, n );
  68. }
  69.  
  70. }
  71.  
  72. int main()
  73. {
  74. ios_base::sync_with_stdio(false);
  75. int panstwa,i;
  76. opis wczytaj;
  77. cin >> panstwa;
  78. int tab[panstwa];
  79. vector<opis> panstw;
  80.  
  81. // int numer, wspolczynnik;
  82. for(i =0; i < panstwa; i++)
  83. {
  84. cin >> wczytaj.npanstwa >> wczytaj.wspolczynnik ;
  85. panstw.push_back(wczytaj);
  86. tab[i]=wczytaj.wspolczynnik;
  87.  
  88. }
  89. int m,n,w;
  90. cin >> m;
  91. while(m > 0)
  92. {
  93. cin >> n;
  94. w=Hoare(panstw,n);
  95. cout << w <<endl;
  96. m--;
  97. }
  98.  
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement