Pagini recente » Cod sursa (job #254702) | Cod sursa (job #2624572) | Cod sursa (job #2633323) | Cod sursa (job #2719756) | Cod sursa (job #866401)
Cod sursa(job #866401)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f,*g;
int v[3000010];
int n,k;
int partitie(int st, int dr)
{ int x=v[(rand()%(dr-st+1))+st];
int j=dr+1,i=st-1;
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;
}