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 |
请问为什么此程序sample过了,但提交re?(内有代码)好心人帮忙看看..谢谢..希望frkstyc能来:)#include <stdio.h> #include <stdlib.h> #include <math.h> int width, leng, *pre, *now, *next; int getvalue(int m){ int max=0; if(m>0){ if(abs(pre[m-1]-now[m])>max) max=abs(pre[m-1]-now[m]); if(abs(now[m-1]-now[m])>max) max=abs(now[m-1]-now[m]); if(abs(next[m-1]-now[m])>max) max=abs(next[m-1]-now[m]); } if(m<width-1){ if(abs(pre[m+1]-now[m])>max) max=abs(pre[m+1]-now[m]); if(abs(now[m+1]-now[m])>max) max=abs(now[m+1]-now[m]); if(abs(next[m+1]-now[m])>max) max=abs(next[m+1]-now[m]); } if(abs(pre[m]-now[m])>max) max=abs(pre[m]-now[m]); if(abs(now[m]-now[m])>max) max=abs(now[m]-now[m]); if(abs(next[m]-now[m])>max) max=abs(next[m]-now[m]); return max; } typedef struct{ int value, num; } pair; int main(){ int i, j, v, x, y, an, *d, *b, *c, mid, k, zeron, flag, *tem; pair a[1000], r; while(scanf("%d", &width)){ if(width==0){ printf("0\n"); break; } an=0; leng=0; while(scanf("%d%d", &x, &y)){ if(x==0 && y==0) break; a[an].value=x; a[an++].num=y; leng+=y; } leng=leng/width; d=(int*)malloc(width*sizeof(int)); b=(int*)malloc(width*sizeof(int)); c=(int*)malloc(width*sizeof(int)); pre=d; now=b; next=c; mid=0; k=0; i=0; while(i<an){ if(a[i].num>width-k){ a[i].num-=width-k; while(k<width){ pre[k]=now[k]=a[i].value; k++; } break; } else{ while(a[i].num--){ pre[k]=now[k]=a[i].value; k++; } i++; } } flag=0; r.value=-1; printf("%d\n", width); while(1){ if(mid==leng-1){ for(j=0; j<width; j++) next[j]=now[j]; }else{ k=0; while(i<an){ if(a[i].num>width-k){ if(k==0 && a[i].num/width>2){ flag=1; zeron=(a[i].num/width-2)*width; a[i].num-=zeron; mid+=zeron/width; } a[i].num-=width-k; while(k<width){ next[k]=a[i].value; k++; } break; } else{ while(a[i].num--){ next[k]=a[i].value; k++; } i++; } } } for(j=0; j<width; j++){ v=getvalue(j); if(r.value==-1){ r.num=1; r.value=v; } else if(v==r.value) r.num++; else{ printf("%d %d\n", r.value, r.num); r.num=1; r.value=v; } } if(flag==1) flag++; else if(flag==2){ if(r.value==0) r.num+=zeron; else{ printf("%d %d\n", r.value, r.num); r.value=0; r.num=zeron; } flag=0; } mid++; if(mid==leng) break; tem=pre; pre=now; now=next; next=tem; } printf("%d %d\n", r.value, r.num); printf("0 0\n"); free(d); free(b); free(c); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator