Cod sursa(job #2279510)

Utilizator andrew_assassin789Andrei Manea andrew_assassin789 Data 9 noiembrie 2018 17:22:03
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
#define nmax 3000005
using namespace std;
int v[nmax],k;
int pivot(int st, int dr)
{
    srand(time(NULL));
    int i=st-1,j;
    //v[dr] e pivotul
    for (j=st;j<=dr-1;j++)
    {
        if (v[j]<=v[dr])
        {
            i++;
            swap(v[i],v[j]);
        }
    }
    swap(v[i+1],v[dr]);
    return i+1;
}
int selKmin(int st, int dr)
{
    int mid=pivot(st,dr);
    if (mid==k)
        return v[k];
    if (k<mid)
        return selKmin(st,mid-1);
    if (mid<k)
        return selKmin(mid+1,dr);
}
int main()
{
    ifstream fin("sdo.in");
    ofstream fout("sdo.out");
    int n,i;
    fin>>n>>k;
    for (i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    fout<<selKmin(1,n)<<'\n';
    fin.close();
    fout.close();
    return 0;
}