Cod sursa(job #2438810)

Utilizator AndreiStanescuAlloys Nokito AndreiStanescu Data 13 iulie 2019 21:38:54
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
//Statistici de ordine
//qs cu pivotul valoarea din mijloc
#include<bits/stdc++.h>
#define nmax 3000001
using namespace std;

int n,v[nmax],k;
//verificat frumos cu exemplu si gandit

void quicksort(int st,int dr)
{
    int i,j,x;
    x=v[(st+dr)/2];
    i=st;
    j=dr;
    do
    {
        while(i<dr && v[i]<x) i++;
        while(j>st && v[j]>x) j--;
        if(i<=j)
        {
            swap(v[i],v[j]);
            i++;
            j--;
        }

    }
    while(i<=j);
    //cout<<i<<' '<<j<<endl;
    if(j>=k)
     {
         if(j>st)
             quicksort(st,j);
     }
    else
    {   if(i<dr)
        quicksort(i,dr);

    }
}

int main()
{
    ifstream fin("sdo.in");
    ofstream fout("sdo.out");
    fin>>n>>k;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    quicksort(1,n);
    fout<<v[k];
    fin.close();
    fout.close();
    //for(int i=1;i<=n;i++)
        //cout<<v[i]<<' ';

}