Cod sursa(job #2078095)

Utilizator Andrei243Nitu Mandel Andrei Andrei243 Data 28 noiembrie 2017 21:49:52
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <algorithm>

using namespace std;
int v[3000000];
ifstream in("sdo.in");
ofstream out("sdo.out");
int partition ( int st, int dr)
{
    int i=st;
    int pivot=v[dr];
    int j=dr;
    int loc;
   while(i<j){
   while(v[i]<pivot)i++;
   while(v[j]>pivot)j--;
   if(i>=j)
      loc=j;
   else
     swap(v[i],v[j]);


   }


    for(int i=st;i<=dr;i++)cout<<v[i]<<"  ";
    cout<<endl<<"pivotul a fost  "<<pivot<<endl;


    if(loc>=dr)loc=dr-1;
    return loc;
}



int quickSort( int st, int dr,int k)
{
    if (st == dr)return v[st];
    {
        int pi = partition( st, dr);
        if(k+st-1<=pi)return quickSort( st, pi,k);
        if(pi<k) return quickSort( pi + 1, dr,k-pi+st-1);



    }


}


int main()
{
    int n,k;
    in>>n>>k;
    for(int i=1; i<=n; i++)in>>v[i];
    out<<quickSort(1,n,k);
    return 0;
}