| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
兄弟们帮帮忙 到底哪里出错了。。。。。。(代码见内)#include <stdio.h>
#define N 2500
long int a[N];
long int findmin(long l,long r)
{
long int result=l,i,tmp;
for(i=l+1;i<=r;i++)
if(a[result]>a[i])
result=i;
tmp=a[l];
a[l]=a[result];
a[result]=tmp;
return a[l];
}
long int findmax(long l,long r)
{
long int result=l,i,tmp;
for(i=l+1;i<=r;i++)
if(a[result]<a[i])
result=i;
tmp=a[l];
a[l]=a[result];
a[result]=tmp;
return a[l];
}
long int find(long l,long r,long pos)
{
long i=l-1,j=r+1,tmp,tmp2;
if(pos==l)return findmin(l,r);
if(pos==r)return findmax(l,r);
tmp=a[l];
while(i<j)
{
while(a[++i]<tmp);
while(a[--j]>tmp);
if(i<j)
{
tmp2=a[i];
a[i]=a[j];
a[j]=tmp2;
}
}
if(j>=pos)return find(l,j,pos);
else return find(j+1,r,pos);
}
int main()
{
long int n,mid,i;
double result;
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
mid=(n+1)/2;
if(n%2==1)
printf("%ld\n",find(1,n,mid));
else
{
result=find(1,n,mid)+findmin(mid+1,n);
result/=2.0;
printf("%.1lf\n",result);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator