Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

兄弟们帮帮忙 到底哪里出错了。。。。。。(代码见内)

Posted by wahahaha at 2005-10-02 20:52:34 on Problem 2623
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator