Cod sursa(job #1888504)

Utilizator Alexandru_IulianAlexandru Iulian Alexandru_Iulian Data 22 februarie 2017 09:59:50
Problema Statistici de ordine Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,k,a[3000010],i;

int part(int st, int dr)
{
    int j,p;
    j=st-1; p=a[dr];
    for(i=st;i<=dr;i++)
    if(a[i]<=p) swap(a[++j], a[i]);
    return j;
}

void load()
{
    f>>n>>k;
    for(i=1;i<=n;i++)
    f>>a[i];
}

void qsort(int st, int dr)
{
    int poz;
    poz=part(st,dr);
    if(st<poz-1) qsort(st,poz-1);
    if(poz+1<dr) qsort(poz+1,dr);
}

int main()
{
    load();
    if(k==part(1,n)) g<<a[k];
    if(k<part(1,n)) qsort(1, part(1,n)-1);
    else qsort(part(1,n)+1, n);
    g<<a[k];


    return 0;
}