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<stdlib.h> #define SIZE 1000 int pair[SIZE][2]; typedef struct omg { int pos; int pixel; }omg; omg outpix[8*SIZE]; int total,width,size1,size2; int get_value(int pos) { int i=0,p=0; while(p<pos) { p+=pair[i++][1]; } return pair[i-1][0]; } int get_code(int pos) { int max=0; int row,col,t_pos; int i,j; int value=get_value(pos); int t_value; row=(pos-1)/width; col=(pos-1)%width; for(i=row-1;i<=row+1;i++) { for(j=col-1;j<=col+1;j++) { t_pos=i*width+j+1; if(i<0||j<0||j>=width||t_pos>total||t_pos==pos) continue; t_value=get_value(t_pos); if(max<abs(t_value-value)) max=abs(t_value-value); } } return max; } int cmp(const void* a,const void* b) { omg *x=(omg *)a; omg *y=(omg *)b; return x->pos-y->pos; } int main() { int pixel,length; int row,col; int i,j,k; int cur; while(scanf("%d",&width)!=EOF) { if(width==0) break; size1=0; total=0; while(scanf("%d%d",&pixel,&length)!=EOF) { if(pixel==0&&length==0) break; pair[size1][0]=pixel; pair[size1++][1]=length; total+=length; } printf("%d\n",width); cur=1; size2=0; for(k=0;k<=size1;k++) { row=(cur-1)/width; col=(cur-1)%width; for(i=row-1;i<=row+1;i++) { for(j=col-1;j<=col+1;j++) { int top=i*width+j+1; if(i<0||j<0||j>=width||top>total) continue; outpix[size2].pos=top; outpix[size2++].pixel=get_code(top); } } cur+=pair[k][1]; } qsort(outpix,size2,sizeof(omg),cmp); omg temp=outpix[0]; for(i=0;i<size2;i++) { if(outpix[i].pixel!=temp.pixel) { printf("%d %d\n",temp.pixel,outpix[i].pos-temp.pos); temp=outpix[i]; } } printf("%d %d\n",temp.pixel,total-temp.pos+1); printf("0 0\n"); } printf("0\n"); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator