Pagini recente » Cod sursa (job #1823102) | Cod sursa (job #2967329) | Cod sursa (job #482599) | Cod sursa (job #1583023) | Cod sursa (job #373483)
Cod sursa(job #373483)
#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;
}