Cod sursa(job #1314089)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 11 ianuarie 2015 15:27:53
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<time.h>
#define nmax 3000000
using namespace std;
int a[nmax];
int n,i,j,k;

void poz (int li,int ls)
{
    if(li>=ls) return;
     i=li,j=ls;
     int p=a[li+rand()%(ls-li+1)];
     while (i<=j)
     {
         while(i<=ls&&a[i]<p) i++;
        while(j>=li&&a[j]>p) j--;
         if (i<=j)
         {
             if(a[i]!=a[j]) swap(a[i],a[j]);
             i++;j--;
         }

     }
}

void quick (int li,int ls)
{
    if(li<ls)
    {
        poz(li,ls);
        if (k<=j) if(li<j) quick(li,j);
        if (k>=j) if(i<ls) quick(i,ls);
}
}
int main()
{
    int i;
    ifstream f("sdo.in");
    ofstream g("sdo.out");
f>>n>>k;
    for(i=1;i<=n;i++)
        f>>a[i];
          srand(time(NULL));
    quick(1,n);
        g<<a[k];
        f.close();
        g.close();
}