Cod sursa(job #1553418)

Utilizator rptomaToma Radu-Petrescu rptoma Data 19 decembrie 2015 19:48:28
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;

ifstream f("sdo.in");
ofstream g("sdo.out");

int n,i,c[3000001],k;

int partitie(int st, int dr)
{
    int i,x,j;
    i=st;
    j=dr;
    x=c[st];
    while (1)
    {
        while(c[i]<x)
        {
            i++;
        }

        while(c[j]>x)
        {
            j--;
        }

        if (i<j) swap(c[i],c[j]);
        else return j;
    }
}

int quickSelect(int st, int dr)
{
    int index;
    if(st==dr) return st;
    index=partitie(st,dr);
    if(k==index) return k;
    else if(k<index) return partitie(st,index);
        else return partitie(index+1, dr);
}


int main()
{
    srand(time(NULL));
    f>>n>>k;
    for(i=1;i<=n;i++) f>>c[i];
    g<<c[quickSelect(1,n)]<<endl;
    for(i=1;i<=n;i++) g<<c[i]<<" ";
    return 0;
}