Cod sursa(job #1321382)

Utilizator VladutZ94FMI Chichirau Vlad Vasile VladutZ94 Data 19 ianuarie 2015 02:27:20
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
#include <iostream>

using namespace std;

int arr[3000005],Val,n;

void afisare(int k)
{
    freopen("sdo.out","w",stdout);
    printf("%d",arr[k]);
}

void SDO(int left, int right, int Val)
{
    int i=left;
    int j=right;
    int pivot=arr[(left+right)/2];

    while(i<=j)
    {
        while(arr[i]<pivot)
            i++;
        while(arr[j]>pivot)
            j--;
        if(i<=j)
        {
            swap(arr[i],arr[j]);
            i++;
            j--;
        }
    }
    if(left-right==1)
    {
        if(Val==left)
            afisare(left);
        else
            afisare(right);
    }
    else
    {
        if(Val<=j)
            SDO(left,j,Val);
        else
            SDO(i,right,Val);
    }
}


int main()
{
    freopen("sdo.in","r",stdin);
    scanf("%d%d",&n,&Val);
    for(int i=1;i<=n;i++)
        scanf("%d",&arr[i]);
    SDO(1,n,Val);
    return 0;
}