Cod sursa(job #1029354)

Utilizator handz.FMI Andrei Tanasescu handz. Data 15 noiembrie 2013 13:27:38
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;

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

#define maxN 3000001
int n,k,v[maxN],rez;

int divide(int p,int q)
{
    int st=p,dr=q,x=v[p];
    while(st<dr)
    {
        while(st<dr && v[dr]>=x) dr--;
        v[st]=v[dr];
        while(st<dr && v[st]<=x) st++;
        v[dr]=v[st];
    }
    v[st]=x;
    return st;
}

void Statistic(int p,int q,int k)
{
    int m=divide(p,q);

    if(m==k) rez=v[m];
    else if(m<k)
    {
        if(m+1<q) Statistic(m+1,q,k);
        else rez=v[m+1];
    }
    else
    {
        if(m-1>p) Statistic(p,m-1,k);
        else rez=v[m-1];
    }
}

int main()
{
    int i; f>>n; f>>k; rez=0;

    for(i=1; i<=n ;i++)
        f>>v[i];

    Statistic(1,n,k);
    g<<rez<<" ";

    return 0;
}