ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1031. Железнодорожные билеты

My Solution here,I've got AC,but not very fast
Послано Destiny 4 ноя 2002 10:37
program railway;
const
 max=1000000000;
 maxn=10000;
var
 p,dist:array[1..maxn]of longint;
 start,stop,n:integer;
 l:array[0..3]of longint;
 cost:array[1..3]of longint;
procedure init;
var
 i:integer;
 x:longint;
begin
 for i:=1 to 3 do
  read(l[i]);
 for i:=1 to 3 do
  read(cost[i]);
 readln(n);
 readln(start,stop);
 if start>stop then
  begin
   x:=start;
   start:=stop;
   stop:=x;
  end;
 dist[1]:=0;
 for i:=2 to n do
  readln(dist[i]);
end;
function get(x,y:integer):longint;
var
 i:integer;
 sum:longint;
begin
 sum:=dist[y]-dist[x];
 for i:=1 to 3 do
  if (sum>l[i-1]) and (sum<=l[i]) then
   begin
    get:=cost[i];
    exit;
   end;
end;
procedure solve;
var
 i,j:integer;
 temp:longint;
begin
 for i:=start+1 to stop do
  p[i]:=Max;
 p[start]:=0;
 for i:=start+1 to stop do
  for j:=i-1 downto start do
   begin
    if dist[i]-dist[j]>l[3] then
     break;
    temp:=get(j,i);
    if p[j]+temp<p[i] then
      p[i]:=p[j]+temp;
   end;
 writeln(p[stop]);
end;
begin
 init;
 solve;
end.
So did I.
Послано use_c 9 ноя 2002 08:37
271903 03:35:23
9 Nov 2002  use_c 1031 C++ Accepted 1.331 sec 106K
So did I.....
Послано aaakkk 11 ноя 2002 17:19
> 271903 03:35:23
> 9 Nov 2002  use_c 1031 C++ Accepted 1.331 sec 106K