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> #include<string.h> #include<stdlib.h> struct endea { char a,b; }a[10001]; int fun1(const void *x,const void *y) { endea *c,*d; c=(endea *)x; d=(endea *)y; return c->a-d->a; } int fun2(const void *x,const void *y) { endea *c,*d; c=(endea *)x; d=(endea *)y; return d->b-c->b; } int main() { int a1,b1,i,j,k,s,n,m,T; while(1) { scanf("%d",&n); if(n==0) break; j=0; k=10001; for(i=1;i<=n;i++) { scanf("%d%d",&a1,&b1); if(a1==0&&b1==0) continue; if(a1<b1) { j++; a[j].a=a1; a[j].b=b1; } else { k--; a[k].a=a1; a[k].b=b1; } } s=10000-k+1; qsort(a+1,j,sizeof(a[0]),fun1); qsort(a+k,s,sizeof(a[0]),fun2); for(i=j+1,m=k;m<=10000;i++,m++) { a[i].a=a[m].a; a[i].b=a[m].b; } j+=s; m=j; T=0; i=1; j=1; while(1) { while(a[i].a==0) i++; if(i>m||j>m) break; while(a[j].b==0) j++; if(i<=j) { T+=a[i].a; a[i].a=0; continue; } else { if(a[i].a==a[i].b) { T+=a[i].a; a[i].a=a[j].b=0; continue; } else if(a[i].a>a[j].b) { T+=a[j].b; a[i].a-=a[j].b; a[j].b=0; continue; } else { T+=a[i].a; a[j].b-=a[i].a; a[i].a=0; continue; } } } for(;j<=m;j++) T+=a[j].b; printf("%d\n",T); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator