Cod sursa(job #373436)

Utilizator MciprianMMciprianM MciprianM Data 13 decembrie 2009 20:18:16
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
using namespace std;
int s[3000001];
int part(int st, int dr){
	int i, j, ii, jj, aux;
	ii=1;jj=0;i=st;j=dr;
	while(i<j){
		if(s[i]>s[j]){
			aux=s[i];s[i]=s[j];s[j]=aux;
			aux=ii;ii=-jj;jj=-aux;
		}
		i+=ii;j+=jj;
	}
	return i;
}
int qusort(int st, int dr, int k){
	if(st<dr){
		int m=part(st,dr);
		if(m==k) return s[k];
		if(k<m) return qusort(st,m-1,k);
		if(k>m) return qusort(m+1,dr, k-m-1);
	}
	if(k==0)	return s[st];
	else return -1;
}
int main(){
	ifstream f("sdo.in");
	ofstream g("sdo.out");
	int n, k, i;
	f>>n>>k;
	--k;
	for(i=0;i<n;i++)
		f>>s[i];
	i=qusort(0,n-1,k);
	g<<i<<'\n';
	g.close();
	return 0;
}