Cod sursa(job #373483)

Utilizator MciprianMMciprianM MciprianM Data 13 decembrie 2009 21:38:33
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
int s[3000001];
int n, k;
int part(int st, int dr){
    srand(time(NULL));
	int i, j=(rand()%(dr+1-st)+st),v, aux;
	v=s[j];
	s[j]=s[st];
	s[st]=v;
	i=st+1;
	for(j=st+1;j<=dr;j++){
		if(s[j]<=v){
			aux=s[i];s[i]=s[j];s[j]=aux;i++;
		}
	}
	--i;aux=s[i];s[i]=s[st];s[st]=aux;
	return i;
}
int qusort(int st, int dr){
    if(st<dr){
        int m=part(st,dr);
        if(m==k) return s[k];
        if(k<m) return qusort(st,m-1);
        if(k>m) return qusort(m+1,dr);
    }
    return s[st];
}
int main(){
    ifstream f("sdo.in");
    ofstream h("sdo.out");
	int i;
    f>>n>>k;
    --k;
    for(i=0;i<n;i++)
        f>>s[i];
    i=qusort(0,n-1);
    h<<i<<'\n';
    h.close();
    return 0;
}