{ ID: anniel11 PROG: milk2 LANG: PASCAL } Program milk2; Var ans1,ans2,i,j,n,sum,head,tail:longint; a:array[1..5000,1..2] of longint; map:array[1..100000] of integer; f:array[0..100000,1..2] of integer; Begin fillchar(map,sizeof(map),0); ans1:=0; ans2:=0; Assign(input, ‘milk2.in‘); reset(input); Assign(output, ‘milk2.out‘); Rewrite(output); Readln(n); head:=maxlongint; tail:=0; fillchar(a,sizeof(a),0); for i:=1 to n do begin readln(a[i,1],a[i,2]); if a[i,1]<head then head:=a[i,1]; if a[i,2]>tail then tail:=a[i,2]; inc(map[a[i,1]]); dec(map[a[i,2]]); end; for i:=head to tail do begin sum:=sum+map[i]; if sum>0 then f[i,1]:=f[i-1,1]+1 else f[i,1]:=0; if f[i,1]>ans1 then ans1:=f[i,1]; if sum<=0 then f[i,2]:=f[i-1,2]+1 else f[i,2]:=0; if f[i,2]>ans2 then ans2:=f[i,2]; // writeln(i,‘ ‘,f[i,1],‘ ‘,f[i,2]); end; writeln(ans1,‘ ‘,ans2); close(input); close(output); End.
原文:http://www.cnblogs.com/OmegaIota/p/3966482.html