Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- struct opis{
- unsigned int npanstwa;
- int wspolczynnik;
- };
- unsigned int najmniejszy_numer_panstwa(vector<opis> rowne)
- {
- unsigned int najmniejszy=1231314124;
- for(auto it : rowne)
- {
- if(najmniejszy > it.npanstwa)
- najmniejszy = it.npanstwa;
- }
- return najmniejszy;
- }
- unsigned int Hoare(int *dane, int n)//n <=rozmiarowi wektora mniejszych, czyszcze clear rownych wiekszych i dane clear sharing to fit
- {
- int mniejsze[n]; //return hoare vector mniejszych n
- int wieksze[n];
- int rowne[n];
- int i=rand()%dane.size() ;
- for( auto it : dane)
- {
- if(dane.data()[i].wspolczynnik < it.wspolczynnik)
- {
- wieksze.push_back(it);
- }
- else if(dane.data()[i].wspolczynnik == it.wspolczynnik)
- {
- rowne.push_back(it);
- }
- else
- {
- mniejsze.push_back(it);
- }
- }
- if(n <= mniejsze.size())
- {
- wieksze.clear();
- rowne.clear();
- dane.clear();
- wieksze.shrink_to_fit();
- rowne.shrink_to_fit();
- dane.shrink_to_fit();
- return Hoare(mniejsze, n);
- }
- if(n > mniejsze.size() && n <= (mniejsze.size()+rowne.size()))
- {
- return najmniejszy_numer_panstwa(rowne);
- }
- if(n > (mniejsze.size()+rowne.size()))
- {
- n=(n-(mniejsze.size()+rowne.size()));
- mniejsze.clear();
- rowne.clear();
- dane.clear();
- mniejsze.shrink_to_fit();
- rowne.shrink_to_fit();
- dane.shrink_to_fit();
- return Hoare(wieksze, n );
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- int panstwa,i;
- opis wczytaj;
- cin >> panstwa;
- int tab[panstwa];
- vector<opis> panstw;
- // int numer, wspolczynnik;
- for(i =0; i < panstwa; i++)
- {
- cin >> wczytaj.npanstwa >> wczytaj.wspolczynnik ;
- panstw.push_back(wczytaj);
- tab[i]=wczytaj.wspolczynnik;
- }
- int m,n,w;
- cin >> m;
- while(m > 0)
- {
- cin >> n;
- w=Hoare(panstw,n);
- cout << w <<endl;
- m--;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement