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<int> dane, int n)//n <=rozmiarowi wektora mniejszych, czyszcze clear rownych wiekszych i dane clear sharing to fit
- {
- if(dane.size()==1)
- {
- return dane.front();
- }
- vector<int> mniejsze; //return hoare vector mniejszych n
- vector<int> wieksze;
- vector<int> rowne;
- int i=dane.size()/2 ;
- for(int j=0; j < dane.size(); j++)
- {
- if(dane[i] < dane[j])
- {
- wieksze.push_back(dane[j]);
- }
- else if(dane[i] == dane[j])
- {
- rowne.push_back(dane[j]);
- }
- else
- {
- mniejsze.push_back(dane[j]);
- }
- }
- 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()))
- {
- mniejsze.shrink_to_fit();
- mniejsze.clear();
- wieksze.clear();
- wieksze.shrink_to_fit();
- dane.clear();
- dane.shrink_to_fit();
- return rowne.front();
- }
- 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,m;
- opis wczytaj;
- cin >> panstwa;
- vector<opis> panstw;
- vector<int> wspolczynnik;
- for(i =0; i < panstwa; i++)
- {
- cin >> wczytaj.npanstwa >> wczytaj.wspolczynnik ;
- panstw.push_back(wczytaj);
- wspolczynnik.push_back(wczytaj.wspolczynnik);
- }
- int n,w,najmniejsze=2147483647;
- cin >> m;
- while(m > 0)
- {
- cin >> n;
- w=Hoare(wspolczynnik,n);
- for(i =0; i < panstw.size(); i++)
- {
- if(najmniejsze > panstw[i].npanstwa && (w == panstw[i].wspolczynnik))
- najmniejsze = panstw[i].npanstwa;
- }
- cout << najmniejsze << endl;
- m--;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement