Cod sursa(job #2198283)

Utilizator ilie0712Botosan Ilie ilie0712 Data 24 aprilie 2018 10:08:39
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <fstream>

using namespace std;
const int N=3000000;
int v[N], st=1, dr,k;

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

void partitie3(int st, int dr, int &p, int &u)
{
    int pivot = v[dr], i=st;
    p=st;
    u=dr;
    while(i<=u)
    {
        if(v[i]<pivot)
            swap(v[i++], v[p++]);

        else if(v[i]>pivot)
            swap(v[i],v[u--]);

        else i++;


    }
    p--;u++;
}
void qs(int st, int dr)
{
    if(st>=dr) return;
    int p,u;
    partitie3(st,dr,p,u);
    if(k<p && k>=st) qs(st,p);
    else if(k>u && k<=dr) qs(u,dr);
    else return;
}


int main()
{
    int n;
    in>>n>>k;
    for(int i=1;i<=n; ++i) in>>v[i];

    qs(1,n);
    out<<v[k];
    return 0;
}