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;
- };
- int Hoare(vector<opis> dane, int n)//n <=rozmiarowi wektora mniejszych, czyszcze clear rownych wiekszych i dane clear sharing to fit
- {
- vector<opis> mniejsze; //return hoare vector mniejszych n
- vector<opis> wieksze;
- vector<opis> rowne;
- 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(); // Jeżeli i > |B| i i ¬ |B| + |C| zwróć a.
- // 5 Jeżeli i > |B| + |C| zwróć (i − (|B| + |C|)). element listy D.
- dane.clear();
- wieksze.shrink_to_fit();
- rowne.shrink_to_fit();
- dane.shrink_to_fit();
- return mniejsze.data()[i].npanstwa;
- }
- if(n > mniejsze.size() && n <= (mniejsze.size()+rowne.size()))
- {
- return i;
- }
- if(n > (mniejsze.size()+rowne.size()))
- {
- return wieksze.data()[i-mniejsze.size()+rowne.size()].npanstwa;
- }
- Hoare(mniejsze,n);
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- int panstwa,i;
- opis wczytaj;
- cin >> panstwa;
- vector<opis> panstw;
- // int numer, wspolczynnik;
- for(i =0; i < panstwa; i++)
- {
- cin >> wczytaj.npanstwa >> wczytaj.wspolczynnik ;
- panstw.push_back(wczytaj);
- }
- int m,n;
- cin >> m;
- cin >> n;
- Hoare(panstw,n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement