Cod sursa(job #373464)

Utilizator MciprianMMciprianM MciprianM Data 13 decembrie 2009 20:58:27
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 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+st) return s[k+st];
        if(k+st<m) return qusort(st,m-1,k);
        if(k+st>m) return qusort(m+1,dr,k+st-m-1);
    }
    return s[st];
}
int main(){
    ifstream f("sdo.in");
    ofstream h("sdo.out");
	int n, k;
    int i;
    f>>n>>k;
    --k;
    for(i=0;i<n;i++)
        f>>s[i];
    i=qusort(0,n-1,k);
    h<<i<<'\n';
    h.close();
    return 0;
}