Pagini recente » Cod sursa (job #1621663) | Cod sursa (job #1029770) | Cod sursa (job #1912506) | Cod sursa (job #1683680) | Cod sursa (job #856139)
Cod sursa(job #856139)
#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=start;pozitie<=final && 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;
}