Pagini recente » Cod sursa (job #3239132) | Cod sursa (job #1293093) | Cod sursa (job #188920) | Cod sursa (job #2265461) | Cod sursa (job #1744355)
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,v[3000002],i,j,k;
int pos(int st,int dr){
int i,j,val,aux;
val=v[st+rand()%(dr-st+1)];
i=st-1;j=dr;
while(0<1){
while (v[i]<val) i++;
while (v[j]>val) j--;
if (i<j){
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
}
int sord(int st,int dr,int poz){
int q,pivot;
if (st==dr) return v[st];
pivot=pos(st,dr);
q=pivot-st+1;
if (q==poz) return v[pivot];
if (q>poz) return sord(st,q-1,poz);
else
return sord(q+1,dr,poz-q);
}
int main(){
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>v[i];
fin.close();
fout<<sord(1,n,k);
fout.close();
return 0;
}