Cod sursa(job #2323879)

Utilizator diaconudanielaDiaconu Daniela diaconudaniela Data 19 ianuarie 2019 22:03:21
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <ctime>
using namespace std;

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

unsigned int a[3000005], n, k, rasp;
unsigned int det(unsigned int p, unsigned int u)
{
    unsigned int poz=rand()%(u-p+1)+p;
    swap(a[p], a[poz]);
    unsigned int pivot=a[p];
    while(p<u)
    {
        while(p<u&&a[u]>=pivot)
            u--;
        a[p]=a[u];
        while(p<u&&a[p]<=pivot)
            p++;
        a[u]=a[p];
    }
    a[p]=pivot;
    return p;
}
void caut(unsigned int p, unsigned int u)
{
    if(p==u)
        return;
    unsigned int poz=det(p, u);
    if(poz==k)
        return;
    if(poz>k)
        caut(p, poz-1);
    else if(poz<k)
        caut(poz+1, u);
}
int main()
{
    srand(time(NULL));
    f >> n >> k;
    for(int i=1; i<=n; i++)
        f >> a[i];
    caut(1, n);
    g << a[k];
    return 0;
}