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

Общий форум

Why I get WA? Pelase, help me!!!!!!! Problem 1078.
Послано Revenger and NSC 24 дек 2001 19:56
There is my code:

Program t1078;

Const MaxN=501;

Type Seg=record l,r,Pred,Cur,Num :integer end;

Var N,i,j  :integer;
    L      :array[1..MaxN]of Seg;
    Way    :array[1..MaxN]of integer;
    Pred,C :integer;
    Max,Mi :integer;

begin
Read(N);
for i:=1 to N do read(l[i].l,l[i].r);
for i:=1 to N do l[i].num:=i;
for i:=1 to N do
 if l[i].l>l[i].r then begin
  j:=l[i].l;
  l[i].l:=l[i].r;
  l[i].r:=j;
 end;
for i:=1 to MaxN do l[i].Pred:=0;
for i:=1 to MaxN do l[i].Cur:=1;
for i:=1 to N-1 do
 for j:=i+1 to N do
  if l[i].l>l[j].l then begin
   l[MaxN]:=l[i];
   l[i]:=l[j];
   l[j]:=l[MaxN];
  end else
 if (l[i].l=l[j].l)and(l[i].r<l[j].r) then begin
   l[MaxN]:=l[i];
   l[i]:=l[j];
   l[j]:=l[MaxN];
 end;
l[1].Pred:=0;
for i:=2 to N do begin
 max:=1;
 mi:=0;
 for j:=1 to N do
  if l[j].l<=l[i].l then
   if l[j].r>=l[i].r then
    if (l[j].l<l[i].l)or(l[j].r>l[i].r) then
     if l[j].cur+1>max then begin
      max:=l[j].cur+1;
      mi:=j;
     end;
 l[i].cur:=max;
 l[i].pred:=mi;
end;
Max:=0;
for i:=1 to N do
 if l[i].cur>max then begin
  max:=l[i].cur;
  mi:=i;
 end;
pred:=mi;
c:=1;
while pred<>0 do begin
 Way[c]:=l[pred].num;
 c:=c+1;
 pred:=l[pred].pred;
end;
Writeln(max);
for i:=1 to max do write(way[i],' ');writeln;
end.
You can email to "hyz12345678@163.com".
Послано Huang Yizheng 25 дек 2001 06:45
> There is my code:
>
> Program t1078;
>
> Const MaxN=501;
>
> Type Seg=record l,r,Pred,Cur,Num :integer end;
>
> Var N,i,j  :integer;
>     L      :array[1..MaxN]of Seg;
>     Way    :array[1..MaxN]of integer;
>     Pred,C :integer;
>     Max,Mi :integer;
>
> begin
> Read(N);
> for i:=1 to N do read(l[i].l,l[i].r);
> for i:=1 to N do l[i].num:=i;
> for i:=1 to N do
>  if l[i].l>l[i].r then begin
>   j:=l[i].l;
>   l[i].l:=l[i].r;
>   l[i].r:=j;
>  end;
> for i:=1 to MaxN do l[i].Pred:=0;
> for i:=1 to MaxN do l[i].Cur:=1;
> for i:=1 to N-1 do
>  for j:=i+1 to N do
>   if l[i].l>l[j].l then begin
>    l[MaxN]:=l[i];
>    l[i]:=l[j];
>    l[j]:=l[MaxN];
>   end else
>  if (l[i].l=l[j].l)and(l[i].r<l[j].r) then begin
>    l[MaxN]:=l[i];
>    l[i]:=l[j];
>    l[j]:=l[MaxN];
>  end;
> l[1].Pred:=0;
> for i:=2 to N do begin
>  max:=1;
>  mi:=0;
>  for j:=1 to N do
>   if l[j].l<=l[i].l then
>    if l[j].r>=l[i].r then
>     if (l[j].l<l[i].l)or(l[j].r>l[i].r) then
>      if l[j].cur+1>max then begin
>       max:=l[j].cur+1;
>       mi:=j;
>      end;
>  l[i].cur:=max;
>  l[i].pred:=mi;
> end;
> Max:=0;
> for i:=1 to N do
>  if l[i].cur>max then begin
>   max:=l[i].cur;
>   mi:=i;
>  end;
> pred:=mi;
> c:=1;
> while pred<>0 do begin
>  Way[c]:=l[pred].num;
>  c:=c+1;
>  pred:=l[pred].pred;
> end;
> Writeln(max);
> for i:=1 to max do write(way[i],' ');writeln;
> end.