Cod sursa(job #1408266)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 29 martie 2015 22:30:51
Problema Statistici de ordine Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>
int v[4000001];
int main()
{
    int n,k,i,begin,end,m,b,e,aux;
    FILE *fin,*fout;
    fin=fopen("sdo.in","r");
    fscanf(fin,"%d%d",&n,&k);
    for(i=1; i<=n; i++)
        fscanf(fin,"%d",&v[i]);
    fclose(fin);
    begin=1;
    end=n;
    while(begin<end)
    {
        m=v[(begin+end)/2];
        b=begin;
        e=end;
        while(b<=e)
        {
            while(v[b]<m)
                b++;
            while(v[e]>m)
                e--;
            if(b<=e)
            {
                aux=v[b];
                v[b]=v[e];
                v[e]=aux;
                b++;
                e--;
            }
        }
        if(k<=e)
            end=e;
        else
            if(k>=b)
                begin=b;
            else
                begin=end=k;
    }
    fout=fopen("sdo.out","w");
    fprintf(fout,"%d\n",v[k]);
    fclose(fout);

    return 0;
}