Cod sursa(job #1896301)

Utilizator blackmanta45Andrei blackmanta45 Data 28 februarie 2017 16:40:43
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int v[3000010],A[3000010],st,dr,mid,i,n,sol,k;

int part(int &st, int &dr){
    int pivot=v[st-rand()%(dr+2)+dr-rand()%(st+2)];
    while(st<=dr){
        while(v[st]<pivot)
            st++;
        while(v[dr]>pivot)
            dr--;
        if(st<=dr){
            int aux=v[st];
            v[st]=v[dr];
            v[dr]=aux;
            st++,dr--;
        }
    }
}

int quick (int st, int dr){
    int left=st,right=dr;
    part(left,right);
    if(st<right)
        quick(st,right);
    if(left<dr)
        quick(left,dr);
}

int main () {
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>v[i];
    quick(1,n);
    fout<<v[k];

}