Pagini recente » Cod sursa (job #2541636) | Cod sursa (job #2707871) | Cod sursa (job #220030) | Cod sursa (job #547007) | Cod sursa (job #3155743)
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream cin ("sdo.in");
ofstream cout ("sdo.out");
int sir[3000001];
int Partitionare (int stanga , int dreapta)
{
int pozitie_pivot = stanga;
swap(sir[stanga + rand() % (dreapta - stanga + 1)] , sir[dreapta]);
for (int indice = stanga ; indice < dreapta ; indice++)
if (sir[indice] < sir[dreapta]) swap(sir[indice] , sir[pozitie_pivot++]);
swap(sir[pozitie_pivot] , sir[dreapta]);
return pozitie_pivot;
}
int Statistica (int stanga , int dreapta , int ordine)
{
int pozitie_pivot = Partitionare(stanga , dreapta);
if (pozitie_pivot == ordine) return sir[ordine];
if (pozitie_pivot > ordine) return Statistica(stanga , pozitie_pivot - 1 , ordine);
return Statistica(pozitie_pivot + 1 , dreapta , ordine);
}
int main ()
{
int lungime , ordine;
cin >> lungime >> ordine;
srand(time(0));
for (int indice = 1 ; indice <= lungime ; indice++)
cin >> sir[indice];
cout << Statistica(1 , lungime , ordine);
cout.close(); cin.close();
return 0;
}