Pagini recente » Cod sursa (job #996066) | Cod sursa (job #481071) | Cod sursa (job #514874) | Cod sursa (job #2141351) | Cod sursa (job #659077)
Cod sursa(job #659077)
#include<stdio.h>
#include<cstdlib>
#include<vector>
using namespace std;
FILE *c,*d;
int n,k;
vector<int> a;
void read()
{
int i,x;
fscanf(c,"%d %d",&n,&k);
for(i=0;i<n;i++)
{
fscanf(c,"%d",&x);
a.push_back(x);
}
}
void swap(int &a,int &b)
{
int aux;
aux=a;
a=b;
b=aux;
}
int partitionize(int l,int r)
{
int i=l-1,j=r+1,value=a[l+rand()%(r-l+1)];
while(1)
{
do
i++;
while(a[i]<value&&i<n-1);
do
j--;
while(a[j]>value&&j>0);
if(i<j)
swap(a[i],a[j]);
else
return j;
}
}
void quick(int st,int dr,int x)
{
int t,q;
if(st<dr)
{
t=partitionize(st,dr);
q=t-st+1;
if(q>=x)
quick(st,t,x);
else
quick(t+1,dr,x-q);;
}
}
int main()
{
c=fopen("sdo.in","r");
d=fopen("sdo.out","w");
read();
quick(0,n-1,k);
fprintf(d,"%d",a[k-1]);
fclose(c);
fclose(d);
return 0;
}