Cod sursa(job #1883606)

Utilizator anamaria41Raicu Ana anamaria41 Data 18 februarie 2017 09:32:12
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n,i,a[3000050],k,x,st,dr;

int part( int st , int dr )
{
    int i,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;
}

int main()
{
    freopen("sdo.in","r",stdin);
    freopen("sdo.out","w",stdout);

    scanf("%d%d",&n,&k);

    for( i=1 ; i<=n ; i++)
        scanf ("%d",&a[i]);

       st=1; dr=n;

       while(x!=k)
       {
            x=part(st,dr);
            if(x>k)dr=x-1;
            else if(x<k)st=x+1;
            else if(x==k) {printf("%d\n",a[x]); break; }
       }
        return 0;
}