Cod sursa(job #668170)

Utilizator mihai995mihai995 mihai995 Data 24 ianuarie 2012 15:04:41
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <cstdlib>
using namespace std;

const int N=3000005;
int v[N];

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

inline void sch(int &a,int &b)
{
    int c=a;a=b;b=c;
}

int sdo(int st,int dr,int k)
{
    int p=v[st+rand()%(dr-st+1)],i,j;
    for (i=st,j=dr;i<j;)
    {
        for (;i<j && v[i]<p;i++);
        for (;i<j && v[j]>p;j--);
        if (i<j && v[i]==v[j])
	 i++;
        if (i<j)
            sch(v[i],v[j]);
    }
    if (i==k)
        return v[i];
    if (k<i)
        return sdo(st,i-1,k);
    return sdo(i+1,dr,k);
}

int main()
{
    int n,k;
    in>>n>>k;
    for (int i=1;i<=n;i++)
        in>>v[i];
    out<<sdo(1,n,k)<<"\n";
    return 0;
}