Pagini recente » Cod sursa (job #897695) | Cod sursa (job #2219659) | Cod sursa (job #2556410) | Cod sursa (job #3155382) | Cod sursa (job #659113)
Cod sursa(job #659113)
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
int v[3000002],n,k;
ifstream f("sdo.in");
ofstream g("sdo.out");
int part(int left,int right){
int i=left,j=right,pivot=v[left+rand()%(right-left+1)];
while(1){
while(v[i]<pivot)i++;
while(v[j]>pivot)j--;
if(i<j)
swap(v[i],v[j]);
else
return j;
}
}
void quick(int left,int right,int k){
if(left==right)return;
int m=part(left,right);
int x=m-left;
if(x>=k)
quick(left,m,k);
else
quick(m+1,right,k-x);
}
int main(){
f>>n>>k;
for(int i=1;i<=n;i++)
f>>v[i];
quick(1,n,k);
g<<v[k]<<"\n";
return 0;
}