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 |
高手看看为什么WA,附注释#include<stdio.h> #include<algorithm> using namespace std; int s[500011],a,b,l[11],g[11],MAX=999999999; double sum; int cmp(const void *a,const void *b) {return *(int*)a-*(int*)b;} void f(int m) {int i,j; for(i=0;i<m;i++) {scanf("%d",&s[i]); sum+=s[i];//求总和 } for(j=0;j<a;j++)//将最小值附加到排序数组 s[i++]=l[j]; qsort(s,m+a,sizeof(s[0]),cmp);//排序 for(i=0;i<a;i++)//更新最小值 l[i]=s[i]; for(i=0;i<b;i++) for(j=0;j<b;j++) if(g[i]<s[m+a-j-1]&&s[m+a-j-1]!=MAX)//更新最大值 {g[i]=s[m+a-j-1]; s[m+a-j-1]=0;} } int main() {int n,i; while(scanf("%d%d%d",&b,&a,&n),a+b+n)//b最大值个数,a最小值个数 {sum=0; //if(n>=500000) if(n>=100)//分组处理 {for(i=0;i<a;i++)//最小值初始化 l[i]=MAX; for(i=0;i<b;i++)//最大值初始化 g[i]=0; int start=0; for(i=0;i<9;i++)//处理前9组 f(n/10),start+=n/10; f(n-start);//处理最后一组 for(i=0;i<a;i++)//减去最小值 sum-=l[i]; for(i=0;i<b;i++)//减去最大值 sum-=g[i]; //printf("%f\n",sum); } else//小数组 {for(i=0;i<n;i++) scanf("%d",&s[i]); qsort(s,n,sizeof(s[0]),cmp); for(i=a;i<n-b;i++) sum+=s[i]; } printf("%f\n",sum/(n-a-b)); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator