jifaley 2012-07-15 18:00:00
点我顶贴
收藏
删除
var
l,s,t,m,sum:longint;
a:array[-1..101] of longint;
b:array[-1..10001] of longint;
h:longint;
f:array[-1..10001] of longint;
procedure ini;
var
i:longint;
begin
readln(l);
readln(s,t,m);
for i:=1 to m do read(a[i]); readln;
a[0]:=0; a[m+1]:=l;
end;
procedure work;
var
i,j:longint;
begin
h:=0;
for j:=1 to m+1 do
begin
i:=a[j]-a[j-1];
if i>4*t then
begin
i:=(i-4*t) mod s+4*t;
end;
if j>1 then b[h]:=1;
inc(h,i);
end;
end;
procedure find;
var
i,j:longint;
min:longint;
begin
f[0]:=0;
for i:=1 to s-1 do f[i]:=maxlongint;
for i:=s to h do
begin
min:=maxlongint;
for j:=s to t do
if f[i-j]<min then min:=f[i-j];
f[i]:=min+b[i];
end;
end;
begin
ini;
work;
find;
writeln(f[h]);
end.