Cod sursa(job #1806757)

Utilizator vladsftVlad Safta vladsft Data 15 noiembrie 2016 17:53:21
Problema Statistici de ordine Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");

int v[3000001];

void schimb(int &a,int &b){
    int c=a;
    a=b;
    b=c;
}
int partr(int st, int dr){
    int i,j,piv=v[dr];
    for (i=j=st;i<dr;i++)
        if (v[i] < piv){
            schimb(v[i],v[j]);
            j++;
        }
    schimb(v[j],v[dr]);
    return j;
}
void qsort(int st, int dr,int &k){
    if (st >= dr) return;
    int p=partr(st,dr);
    if (k<p)
        qsort(st,p-1,k);
    if (k>p)
        qsort(p+1,dr,k);
}
int main()
{
    int n,i,j,k;
    f >> n >> k;
    for (i=1;i<=n;i++)
        f >> v[i];
    for (i=n;i>=1;i--)
    {
        j=1+rand()%i;
        schimb(v[i],v[j]);
    }
    qsort(1,n,k);
    g << v[k];
    return 0;
}