Cod sursa(job #2323416)

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

int v[3000001];

void mergeS(int l,int r){
    if(l==r) return;
    int m = (l+r)/2;
    mergeS(l,m);
    mergeS(m+1,r);
    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;
    fin>>n>>k;
    for(int i=1;i<=n;i++) fin>>v[i];
    mergeS(1,n);
    fout<<v[k];
    return 0;
}