Cod sursa(job #1237167)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 3 octombrie 2014 11:03:37
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<algorithm>
 
using namespace std;
 
#define Nmax 3000001
 
ifstream f("sdo.in");
ofstream g("sdo.out");
 
int A[Nmax], n, k;
 
int part(int st, int dr) {
    int i=st-1, j=dr+1, val, pivot;
    pivot=st+rand()%(dr-st+1);
    val=A[pivot];
    while(1) {
        do i++; while(A[i]<val);
        do j--; while(A[j]>val);
        if(i<j)
            swap(A[i],A[j]);
        else
            return j;
    }
}
 
void rez(int st, int dr) {
    if(st<dr) {
        int x=part(st,dr);
        if(x != k)
        {
            if(x>k) 
                rez(st,x);
            else
                rez(x+1,dr);
        }    
    }
}
 
int main() {
    srand(time(0));
    f>>n>>k;
    for(int i=1; i<=n; i++)
        f>>A[i];
    rez(1,n);
    g<<A[k];
     
    f.close();
    g.close();
    return 0;
}