Cod sursa(job #1722267)

Utilizator refugiatBoni Daniel Stefan refugiat Data 27 iunie 2016 19:03:30
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream si("sdo.in");
ofstream so("sdo.out");
int v[3000005];
int sortare(int st,int dr)
{
    int piv=v[(st+dr)>>1];
    int i=st-1,j=dr+1,aux;
    while(1)
    {
        i++;
        while(piv>v[i])
            ++i;
        j--;
        while(piv<v[j])
            --j;
        if(i<j)
        {
            aux=v[i];
            v[i]=v[j];
            v[j]=aux;
        }
        else
            return j;
    }
}
void rez(int st,int dr,int k)
{
    if(st==dr)
        return;
    int s=sortare(st,dr);
    int t=s-st+1;
    if(t>=k)
        rez(st,s,k);
    else
        rez(s+1,dr,k-t);

}
int main()
{
    int n,k;
    si>>n>>k;
    int i;

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

    rez(1,n,k);
    so<<v[k];
    so.close();
    return 0;
}