Pagini recente » Cod sursa (job #3154334) | Cod sursa (job #2296155) | Cod sursa (job #106728) | Cod sursa (job #1598652) | Cod sursa (job #856176)
Cod sursa(job #856176)
#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--;
}
}
for(pozitie=final;pozitie>=start && V[pozitie] !=pivot;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;
}