Cod sursa(job #1815263)

Utilizator TherevengerkingSurani Adrian Therevengerking Data 24 noiembrie 2016 23:17:18
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("quick.in");
ofstream fout("quick.out");
int a[105],p,n,x,pivotIndex;
int partit(int a[105],int left,int right,int pivotIndex)
{
    int pivotValue,i,storeIndex;
    pivotValue=a[pivotIndex];
    swap(a[pivotIndex],a[right]);
    storeIndex=left;
    for(i=left;i<right;i++)
    {
        if(a[i]<pivotValue)
        {
            swap(a[storeIndex],a[i]);
            storeIndex++;
        }
    }
    swap(a[right],a[storeIndex]);
    return storeIndex;
}
int select(int a[105],int left,int right,int x)
{
    while(1){
    if(left==right)
        return a[left];
    pivotIndex=a[left];
    pivotIndex=partit(a,left,right,pivotIndex);
    if(x==pivotIndex)
        return a[x];
    else
    {
        if(x<pivotIndex)
            return select(a,left,pivotIndex-1,x);
        else
            return select(a,pivotIndex+1,right,x);
    }
    }
}
int main()
{
    fin>>n>>x;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    fout<<select(a,1,n,x);
    return 0;
}