Pagini recente » Cod sursa (job #192478) | Cod sursa (job #2210209) | Cod sursa (job #3258078) | Cod sursa (job #2797463) | Cod sursa (job #856305)
Cod sursa(job #856305)
#include <fstream>
#define NMAX 3000004
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int V[NMAX],N,K,result ;
int SDO(int start, int final)
{
if(start == final){ result = V[start]; return 0;}
int pivot = V[(start+final)/2],aux,pozitie;
int left = start, right = final;
while(left<=right)
{
while(V[left]<pivot)
left++;
while(V[right]>pivot)
right--;
if(left<=right)
{
aux = V[left];
V[left] = V[right];
V[right] = aux;
left++,right--;
}
}
pozitie = final;
while(V[pozitie]!=pivot && pozitie >=start) pozitie--;
//vad cate elemente am in stanga
if(pozitie-start+1 >= K)
SDO(start,pozitie);
else K-= (pozitie-start+1),SDO(pozitie+1,final);
}
int main()
{
int i;
in>>N>>K;
for(i=1;i<=N;in>>V[i++]);
SDO(1,N);
out<<result<<'\n';
return 0;
}