| ||||||||||
| 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 | |||||||||
唔唔唔。。。这道题为什么Pascal编的过不了。。。c的可以。。。。???那位好心帮我看看。。#include <stdio.h>
#include <math.h>
#define N 250000
long a[N];
long p(long l,long r)
{
long i=l-1,j=r+1,tmp=a[l],tmp2;
while(i<j)
{
while(a[++i]<tmp);
while(a[--j]>tmp);
if(i<j)
{
tmp2=a[i];
a[i]=a[j];
a[j]=tmp2;
}
}
return j;
}
void qsort(long l,long r)
{
long mid;
if(l<r)
{
mid=p(l,r);
qsort(l,mid);
qsort(mid+1,r);
}
}
int main()
{
long n,i;
double result;
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
qsort(1,n);
if(n%2==1)
printf("%ld.0\n",a[(n+1)/2]);
else
{
result=1.0*a[n/2]+1.0*a[(n+2)/2];
result/=2.0;
printf("%.1lf\n",result) ;
}
return 0;
}
program p2623;
var n:longint;
num:array[1..250000]of longint;
procedure init;
var i:longint;
begin
readln(n);
for i:=1 to n do
readln(num[i]);
end;
procedure qsort(l,r:longint);
var i,j,mid,s:longint;
begin
i:=l;j:=r;mid:=num[(l+r) div 2];
repeat
while num[i]<mid do inc(i);
while num[j]>mid do dec(j);
if i<=j then begin
s:=num[i];
num[i]:=num[j];
num[j]:=s;
inc(i); dec(j);
end;
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
procedure main;
var ou:extended;
begin
if n mod 2=1 then writeln(num[(n+1)div 2],'.0')
else begin
ou:=(num[n div 2]+num[n div 2+1])/2;
writeln(ou:0:1);
end;
end;
begin
init;
qsort(1,n);
main;
end.
有什么不同么?
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator