Pagini recente » Cod sursa (job #2942156) | Cod sursa (job #2250206) | Cod sursa (job #145421) | Cod sursa (job #1937034) | Cod sursa (job #1536503)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *fin,*fout;
int n,k;
int a[3000010];
int ord(int st,int en,int piv)
{
if(st<en)
{
int s=a[piv],d=a[piv];
int p1=st-1,p2=en+1;
while(p1!=p2)
{
if(s==a[piv]&&p1!=piv)
{
p1++;
if(s<a[p1])
{
s=a[p1];
}
}
else if(d==a[piv]&&p2!=piv)
{
p2--;
if(d>a[p2])
{
d=a[p2];
}
}
else
{
swap(a[p1],a[p2]);
s=a[piv];
d=a[piv];
}
}
ord(st,piv-1,(st+piv-1)/2);
/*for(int i=1;i<=n;i++)
{
fprintf(fout,"%d ",a[i]);
}
fprintf(fout,"\n");*/
ord(piv+1,en,(piv+1+en)/2);
/*for(int i=1;i<=n;i++)
{
fprintf(fout,"%d ",a[i]);
}
fprintf(fout,"\n");*/
}
}
int main()
{
fin=fopen("sdo.in","r");
fout=fopen("sdo.out","w");
fscanf(fin,"%d %d",&n,&k);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d",&a[i]);
}
int s=a[k+1],d=a[k+1];
int p1=1,p2=n;
while(p1!=p2)
{
if(s==a[k+1]&&p1!=k+1)
{
p1++;
if(s<a[p1])
{
s=a[p1];
}
}
else if(d==a[k+1]&&p2!=k+1)
{
p2--;
if(d>a[p2])
{
d=a[p2];
}
}
else
{
swap(a[p1],a[p2]);
s=a[k+1];
d=a[k+1];
}
}
/*for(int i=1;i<=n;i++)
{
fprintf(fout,"%d ",a[i]);
}
fprintf(fout,"\n");*/
ord(1,k+1,(k+2)/2);
fprintf(fout,"%d",a[k]);
}