Pagini recente » Cod sursa (job #369870) | Cod sursa (job #2155491) | Cod sursa (job #1229362) | Cod sursa (job #2913232) | Cod sursa (job #855817)
Cod sursa(job #855817)
#include<stdio.h>
#include<cstdlib>
#include<time.h>
using namespace std;
int n,k,s[3000001];
int partitie(int st,int dr)
{
int aux,dif=dr-st+1;
int i=st-1;
srand(time(NULL));
int piv=rand()%dif+st;
aux=s[piv];
s[piv]=s[dr];
s[dr]=aux;
piv=s[dr];
for (int j=st;j<dr;j++)
{
if (s[j]<=piv)
{
++i;
aux=s[j];
s[j]=s[i];
s[i]=aux;
}
}
++i;
aux=s[i];
s[i]=s[dr];
s[dr]=aux;
return i;
}
int cauta(int st,int dr)
{
int piv;
piv=partitie(st,dr);
if (piv==k-1)
return s[piv];
if (piv<k-1)
cauta(piv+1,dr);
else cauta(st,piv-1);
}
int main()
{
FILE*f,*g;
f=fopen("sdo.in","r");
g=fopen("sdo.out","w");
fscanf(f,"%d%d",&n,&k);
for (int i=0;i<n;i++)
{
fscanf(f,"%d",&s[i]);
}
fprintf(g,"%d",cauta(0,n-1));
}