Cod sursa(job #2540443)

Utilizator radugnnGone Radu Mihnea radugnn Data 7 februarie 2020 10:13:14
Problema Statistici de ordine Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout("sdo.out");
int v[3000010],n,pivot,st,dr,i,k;
int poz(int st, int dr){
    int i=st,j=dr,aux;
    int di=0,dj=-1;
    while(i<j){
        if(v[i]>v[j]){
            swap(v[i],v[j]);
            aux=di;
            di=-dj;
            dj=-aux;
        }
        i+=di;
        j+=dj;

    }
    return i;
}
int sortare(int st, int dr, int k){
    if(st<dr){
        pivot=poz(st,dr);
        if(pivot==k)
            return v[k];
        if(pivot>k)
            sortare(1,pivot-1,k);
        else
            sortare(pivot+1,n,k);
    }
    else
        return v[st];
}
int main(){
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>v[i];
    fout<<sortare(1,n,k);

    return 0;
}