Mai intai trebuie sa te autentifici.
Cod sursa(job #856843)
| Utilizator | Data | 16 ianuarie 2013 23:48:29 | |
|---|---|---|---|
| Problema | Statistici de ordine | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int n,k,a[3000001];
void quick(int l,int r){
int piv=rand()%(r-l+1)+l;
int x=l,y=r,aux;
while(x<=y){
while(a[x]<a[piv])
++x;
while(a[y]>a[piv])
--y;
if(x<=y){
aux=a[x];
a[x]=a[y];
a[y]=aux;
++x; --y;
}
}
if(y+1==k){
printf("%d",a[k]);
return;
}
if(k>=x)
quick(x,r);
else
quick(l,y);
}
int main(){
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i){
scanf("%d",a+i);
}
srand(time(NULL));
quick(1,n);
}