Cod sursa(job #1276045)

Utilizator sing_exFMIGhita Tudor sing_ex Data 25 noiembrie 2014 21:52:59
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <algorithm>

using namespace std;

int part(int *v, int l, int r) {
    int p = rand()%(r-l) + l;
    int i,x,pos,value;
    value = v[p];
    x = v[p];
    v[p] = v[r];
    v[r] = x;
    pos = l;
    for (i=l;i<r;i++) {
        if (v[i] < value) {
            x = v[i];
            v[i] = v[pos];
            v[pos] = x;
            pos++;
        }
    }
    x = v[pos];
    v[pos] = v[r];
    v[r] = x;
    return pos;
}

void pivot (int *v, int l, int r, int k) {
    if (l == r || l > r) return;
    int p = part(v,l,r);
    pivot(v,p+1,r,k);
    pivot(v,l,p-1,k);
}


int main()
{
    int n,k,i;
    ifstream f("sdo.in");
    f>>n;
    f>>k;
    int v[300000];
    for (i=0;i<n;i++) f>>v[i];
    f.close();
    pivot(v,0,n-1,k);
    ofstream g("sdo.out");
    g<<v[k-1];
    g.close();
    return 0;
}