终于进入Section 1.2了,说好的定期做题又因为各种原因一拖再拖。表示我英语渣渣题意没读清楚,然后又粗心了,提交了两三次才AC过去。
需要注意两点:
1.输入100 200,表示100~199秒在挤牛奶,第200秒停下。
2.并不是从时间1开始统计,我用了be和en表示一天工作的开始时间和结束时间。
程序描述:
a数组 a[i]=true表示i时有人在工作 false表示没有人工作
s1,s2 存储最终答案
ss1,ss2 存储当前答案并比较。通过对于a数组的扫描变化。{自恋一下,自认为这段写的挺好看的。}
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
var n,i,j,min,max,be,en:longint; a:array[0..1000000] of boolean; s1,s2,ss1,ss2:longint; begin assign(input,'milk2.in');reset(input); assign(output,'milk2.out');rewrite(output); readln(n); max:=0; min:=maxlongint; fillchar(a,sizeof(a),false); for i:=1 to n do begin readln(be,en); for j:=be to en-1 do a[j]:=true; if en>max then max:=en; if be<min then min:=be; end; for i:=min to max-1 do begin if a[i] then begin ss1:=ss1+1; ss2:=0; end else begin ss1:=0; ss2:=ss2+1; end; if ss1>s1 then s1:=ss1; if ss2>s2 then s2:=ss2; end; writeln(s1,' ',s2); close(input);close(output); end.