Cod sursa(job #2323384)

Utilizator rangrazvanRang Razvan Victor rangrazvan Data 19 ianuarie 2019 10:25:39
Problema Statistici de ordine Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;

void mergeS(int l,int r,int *v){
    if(l==r) return;
    int m = (l+r)/2;
    mergeS(l,m,v);
    mergeS(m+1,r,v);
    vector<int> x;
    int i=l;
    int j=m+1;
    while(i<=m && j<=r){
        if(v[i]<v[j]){
            x.pb(v[i]);
            i++;
        }else{
            x.pb(v[j]);
            j++;
        }
    }

    if(i==m+1 && j<=r){
        for(int z=j;z<=r;z++) x.pb(v[z]);
    }else{
        if(i<=m && j==r+1)
            for(int z=i;i<=m;i++) x.pb(v[z]);
    }

    for(int z=r;z>=l;z--){
        v[z] = x.back();
        x.pop_back();
    }
}

int main()
{
    ifstream fin("sdo.in");
    ofstream fout("sdo.out");
    int n,k,*v;
    fin>>n>>k;
    v = new int[n+1];
    for(int i=1;i<=n;i++) fin>>v[i];
    mergeS(1,n,v);
    fout<<v[k];
    return 0;
}