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 |
这个问题一直比较诡异,经常碰到类似,哪位大牛能解答一下In Reply To:哪位高手能帮我看一下,为什么这题我用C++可以AC,用G++就WA? Posted by:tytzyl at 2006-05-28 23:50:10 > #include<stdio.h> > #include<stdlib.h> > > > __int64 s; > int n,n1,n2,max,min; > > __int64 a[500]; > int solve(__int64); > int cmp( const void *a, const void *b) > { > if(*(int*)a>*(int*)b) > return 1; > else if(*(int*)a<*(int*)b) > return -1; > else > return 0; > } > > int init(void) > { > __int64 v; > int i; > scanf("%d%d%d",&n2,&n1,&n); > if(!n1&&!n2&&!n) > return 0; > for(i=0;i<n1+n2;i++) > scanf("%I64d",&a[i]); > qsort((void*)a,n1+n2,sizeof(__int64),cmp); > max=n1-1;min=n1; > s=0; > for(;i<n;i++) > { > scanf("%I64d",&v); > solve(v); > } > return 1; > > } > > int solve(__int64 v) > { > int i; > if(v<a[max]) > { > s+=a[max]; > a[max]=v; > max=0; > for(i=0;i<n1;i++) if(a[i]>a[max]) > max=i; > } > else if(v>a[min]) > { > s+=a[min]; > a[min]=v; > min=n1; > for(i=n1;i<n1+n2;i++) if(a[i]<a[min]) > min=i; > } > else > s+=v; > return 0; > > } > > int main() > { > long double average; > while(init()) > { > average=(long double)s; > average/=(long double)(n-n1-n2); > printf("%.6lf\n",average); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator