Cod sursa(job #1524375)

Utilizator HorridSaracin Mihnea Horrid Data 13 noiembrie 2015 23:44:44
Problema Statistici de ordine Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;

int  a[3000020];
int part(int l,int r)
{
    int i=l,j=r,aux=0;;
    int x=a[l+rand()%(r-l+1)];

    while(7)
    {
     while(a[i]>x)  i++;
     while(a[j]<x)  j--;
     if(i<j){
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            }

    else return j;
    }



}
int prog(int l,int r,int k)
{
    int t,p;
    if(l==r)   return r;

    t=part(l,r);
    p=t-l+1;
    if (k==p)    return t;
        else if (k<p)   return prog(l,t-1,k);
                        else return prog(t+1,r,k-p);




}




int main()
{
int i,n,k,z;

    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]);

    z=prog(1,n,k);
fprintf(g,"%d",a[n-z+1]);
fclose(f);
fclose(g);







    return 0;
}