Pagini recente » Cod sursa (job #1567877) | Cod sursa (job #384188) | Cod sursa (job #263657) | Cod sursa (job #363833) | Cod sursa (job #866404)
Cod sursa(job #866404)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f,*g;
int v[3000010];
int n,k;
int partitie(int st, int dr)
{ int j=dr+1,i=st-1,x=v[(rand()%(dr-st+1))+st];
while (1)
{ do i++; while(v[i]<x);
do j--; while(x<v[j]);
if (i<j) swap(v[i],v[j]); else return j;
}
}
int divide(int st, int dr)
{ if(st==dr) return v[st];
int q=partitie(st,dr);
if (k<=q) return (divide(st,q));
else return (divide(q+1,dr));
}
int main()
{ f=fopen("sdo.in","r"); g=fopen("sdo.out","w");
fscanf(f,"%d%d",&n,&k);
for(int i=1;i<=n;i++) fscanf(f,"%d",&v[i]);
fprintf(g,"%d",divide(1,n));
return 0;
}