Pagini recente » Cod sursa (job #897809) | Cod sursa (job #1411951) | Cod sursa (job #2665378) | Cod sursa (job #45214) | Cod sursa (job #648535)
Cod sursa(job #648535)
#include<iostream>
#include<stdio.h>
using namespace std;
void Quick(int* t,int st,int dr, int k ) //Sortarea rapida (!)
{ int i=st,j=dr,w,piv=t[(i+j)/2];
do {
while(t[i] < piv) i++;
while(t[j] > piv) j--;
if(i <= j) {w=t[i]; t[i]=t[j]; t[j]=w; i++; j--;}
}
while(j >= i);
if(st < j) {
if( j - st + 1 >= k ) // daca elementul e in stanga
Quick(t,st,j,k);
}
if(dr > i)
{
if( j - st + 1 < k )// daca elementul e in dreapta
Quick(t,i,dr, k - ( j - st + 1 ));// il scad pe k cu cate elemente sunt in stanga
}
}
int i,v[3000001],n;
int main()
{
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
int k;
scanf("%d %d", &n, &k);
for(i=1;i<=n;i++)
scanf("%d", &v[i]);
Quick(v,1,n,k);
cout<<v[k];
}