题解 P1664 【每日打卡心情好】
细节1:当天数为负时,应改为0!
细节2:未签到减去的天数不是每天减,而是之后签到的第一天再结算!
var n,d,s,i,x,y:longint;
begin
readln(n);
for i:=1 to n do begin
read(x);
if x=1 then begin
d:=d-y div 2;
y:=1;
if d<0 then d:=0;
inc(d);
case d of
1,2:s:=s+1;
3,4,5,6:s:=s+2;
end;
if (d>=7)and(d<30)then s:=s+3;
if (d>=30)and(d<120)then s:=s+4;
if (d>=120)and(d<365)then s:=s+5;
if d>=365 then s:=s+6;
end
else y:=y*2;
end;
writeln(s);
end.