Pagini recente » Istoria paginii runda/iconcurs19 | Cod sursa (job #1554117) | Istoria paginii runda/simulare-cartita-31b/clasament | Istoria paginii runda/rar16 | Cod sursa (job #1524393)
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
int a[3000020];
int part(int l,int r)
{
int i=l-1,j=r+1,aux=0;;
int x=a[l+rand()%(r-l+1)];
while(7)
{
do { i++; }while(a[i]<x);
do { j--; }while(a[j]>x);
if(i<j){
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
else return j;
}
}
void prog(int l,int r,int k)
{
int t,p;
if(l==r) return ;
t=part(l,r);
p=t-l+1;
if (p>=k) prog(l,t,k);
else prog(t+1,r,k-t);
}
int main()
{
int i,n,z,k;
f=fopen("sdo.in","r");
g=fopen("sdo.out","w");
fscanf(f,"%d",&n);
// if(!(a=malloc(sizeof(int)*n)));
fscanf(f,"%d",&k);
for(i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
prog(1,n,k);
fprintf(g,"%d",a[k]);
fclose(f);
fclose(g);
return 0;
}