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 |
突然间发现255是像素值而不是宽的上限,指针的结果-RuntimeError郁闷~~~program p1009(input,output); type pointer=^node; node=record a,b:longint; next:pointer; end; var tot,pos:longint; w,a,b,i:longint; head,p,q:pointer; pre:array[0..255] of longint; h:longint; procedure insert(a,b:longint); begin if a=q^.a then inc(q^.b,b) else begin new(q^.next); q:=q^.next; q^.a:=a; q^.b:=b; q^.next:=nil; end; end; procedure doit(a,b:longint); var t:pointer; count,ans,loc:longint; begin ans:=0; inc(pos); h:=(h+1) mod 256; pre[h]:=a; if pos>w then begin count:=abs(pre[(h-w+256) mod 256]-a); if count>ans then ans:=count; if pos mod w<>1 then begin count:=abs(pre[(h-w+255) mod 256]-a); if count>ans then ans:=count; end; if pos mod w<>0 then begin count:=abs(pre[(h-w+257) mod 256]-a); if count>ans then ans:=count; end; end; if pos mod w<>1 then begin count:=abs(pre[(h+255) mod 256]-a); if count>ans then ans:=count; end; if pos mod w<>0 then if i=b then begin count:=abs(p^.next^.a-a); if count>ans then ans:=count; end; if pos<=tot-w then begin loc:=b-i; t:=p; while loc<w-1 do begin t:=t^.next; loc:=loc+t^.b; end; if pos mod w<>1 then begin count:=abs(t^.a-a); if count>ans then ans:=count; end; while loc<w do begin t:=t^.next; loc:=loc+t^.b; end; count:=abs(t^.a-a); if count>ans then ans:=count; if pos mod w<>0 then begin while loc<w+1 do begin t:=t^.next; loc:=loc+t^.b; end; count:=abs(t^.a-a); if count>ans then ans:=count; end; end; insert(ans,1); end; begin new(head); head^.a:=-1; head^.b:=-1; readln(w); writeln(w); while w<>0 do begin fillchar(pre,sizeof(pre),0); h:=255; tot:=0; pos:=0; q:=head; readln(a,b); while a<>0 do begin insert(a,b); inc(tot,b); readln(a,b); end; q:=head; p:=q^.next; while p<>nil do with p^ do begin if b<=2*w+2 then for i:=1 to b do doit(a,b) else begin for i:=1 to w+1 do doit(a,b); for i:=0 to 255 do pre[i]:=a; h:=255; insert(0,b-2*w-2); pos:=pos+b-2*w-2; for i:=b-w to b do doit(a,b); end; q^.next:=next; dispose(p); p:=q^.next; end; p:=head^.next; while p<>nil do begin writeln(p^.a,' ',p^.b); q:=p^.next; dispose(p); p:=q; end; writeln(0,' ',0); readln(w); writeln(w); end; end. Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator