Гомельская обл. \1998\День 1\C - "Такси"
Выложу сразу исходник.
var
a,b,ans : Array [1..100] of longint;
st : array [1..100] of longint;
n,i,sum,stn,kol,min : longint;
Procedure rec(k : longint);
var ak,i : longint;
begin
ak:=b[k];
if sum+ak>n then exit;
inc(sum,ak);
inc(st[ak]);
if sum=n then
begin
kol:=0;
for i:=1 to 10 do kol:=kol+a[i]*st[i];
if kol<min then
begin
min:=kol;
for i:=1 to 10 do ans[i]:=st[i];
end;
end;
rec(k);
for i:=k+1 to 10 do rec(i);
dec(sum,ak);
dec(st[ak]);
end;
begin
assign(input,'taxi.inp'); reset(input);
assign(output,'output.txt'); rewrite(output);
min:=maxlongint;
for i:=1 to 10 do read(a[i]);
read(n);
sum:=0;
for i:=1 to 10 do b[i]:=i;
for i:=1 to 10 do rec(i);
for i:=1 to 10 do
begin
while ans[i]>0 do
begin
writeln(i,' ',a[i]);
dec(ans[i]);
end;
end;
writeln(min);
close(input); close(output);
end.
Вот мои посылки на разные компиляторы:
C. Такси 100 / 100 Все тесты успешно пройдены 1С.pas DelTA3 at NewIT Delphi 7
26.11 20:20 C. Такси 0 / 100 ошибка компиляции 1С.pas DelTA3 at NewIT FP Win32 2.0.2
26.11 20:19 C. Такси 100 / 100 Все тесты успешно пройдены 1С.pas DelTA3 at NewIT FP go32v2 v1.0.10
26.11 20:18 C. Такси 0 / 100 Ошибка чекера на 5-ом тесте. Причина выхода: Runtime Error 201:Range check error 1С.pas DelTA3 at DLServer FP Win32 v2.2.0
C. Такси 100 / 100 Все тесты успешно пройдены 1C.pas DelTA3 at NewIT Turbo Pascal 7.0
Хотелось бы разобраться, почему один и тот же код на одних компиляторах проходит, а на других слетает.
(Конкретно интересует компилятор FP Win32 v2.2.0 там где ошибка чекера)