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

Общий форум

Is the test data of 1153(Supercomputer) right? I think my program is exactly right, but WA!
Послано Li, Yi 5 дек 2001 17:58
I've tested a lot of data, and my program outputs the right
answers.
The following is my code:
============================================================
const
  maxdigit = 610;
var
  a : array[1..maxdigit] of byte;
  b : array[0..maxdigit] of byte;
  cc : array[0..maxdigit] of byte;
  c, t : array[0..maxdigit] of byte;
  m : array[1..maxdigit] of byte;
  lla, la, lb, lc, lcc, lm, lt, start : integer;
  digit, digitpoint : integer;

procedure init;
var ch : char;
    i, p, q : integer;
begin
  lcc := 0;
  while not eof do
  begin
    read(ch);
    if ch in ['0'..'9'] then
    begin
      inc(lcc);
      cc[lcc] := ord(ch) - 48;
    end;
  end;
  p := 0;
  for i := lcc downto 0 do
  begin
    p := p + cc[i] * 8;
    cc[i] := p mod 10;
    p := p div 10;
  end;
  if cc[0] > 0 then
  begin
    inc(lcc);
    for i := lcc downto 1 do
      cc[i] := cc[i - 1];
    cc[0] := 0;
  end;
  inc(cc[lcc]);
  for i := lcc downto 1 do
    if cc[i] >= 10 then
      begin
        inc(cc[i + 1]);
        cc[i] := 0;
      end
    else break;
  if cc[0] > 1 then
  begin
    inc(lcc);
    for i := lcc downto lcc do
      cc[i] := cc[i - 1];
    cc[0] := 0;
  end;
end;

procedure process;
var k : integer;
begin
  la := 0;
  if odd(lcc) then
    begin
      k := 0;
      digitpoint := lcc + 1;
    end
  else
    begin
      k := 1;
      digitpoint := lcc;
    end;
  while k <= lcc do
  begin
    inc(la);
    a[la] := cc[k] * 10 + cc[k + 1];
    k := k + 2;
  end;
end;

function small : boolean;
var i : integer;
begin
  if lt > lm then small := false
  else
    if lt < lm then small := true
    else
      begin
        for i := 1 to lt do
        begin
          if t[i] > m[i] then begin small := false; exit;
end;
          if t[i] < m[i] then begin small := true; exit;
end;
        end;
        small := true;
      end;
end;

procedure minus;
var i, j, k : integer;
begin
  if lt < lm then
  begin
    j := lm - lt;
    for i := lm downto j do
      t[i] := t[i - j];
    for i := 1 to j - 1 do t[i] := 0;
  end;
  k := 0;
  for i := lm downto 1 do
    if m[i] >= t[i] + k then
      begin
        m[i] := m[i] - t[i] - k;
        k := 0
      end
    else
      begin
        m[i] := 10 + m[i] - t[i] - k;
        k := 1;
      end;
  j := 1;
  while (m[j] = 0) and (j < maxdigit) do inc(j);
  if j > 1 then
  begin
    for i := 1 to lm - j + 1 do
      m[i] := m[i + j - 1];
    lm := lm - j + 1;
  end;
end;

procedure doublec;
var i, j, k : integer;
begin
  c[0] := 0;
  k := 0;
  for j := lb downto 0 do
  begin
    k := k + b[j] * 2;
    c[j] := k mod 10;
    k := k div 10;
  end;
  lc := lb;
  if c[0] > 0 then
  begin
    for i := lc + 1 downto 1 do
      c[i] := c[i - 1];
    inc(lc);
    c[0] := 0;
  end;
end;

procedure worknext;
var i, j, q : integer;
begin
  if b[lb] >= 1 then
    dec(b[lb])
  else
    begin
      b[lb] := 9;
      for i := lb - 1 downto 1 do
      begin
        if b[i] >= 1 then begin dec(b[i]); break; end;
        b[i] := 9;
      end;
    end;
  if b[1] = 0 then
  begin
    for i := 1 to lb - 1 do
      b[i] := b[i + 1];
    dec(lb);
    b[lb] := 0;
  end;
  fillchar(cc, sizeof(cc), 0);
  lcc := 0;
  q := 0;
  for i := 1 to lb do
  begin
    q := q * 10 + b[i];
    inc(lcc);
    cc[lcc] := q div 2;
    q := q mod 2;
  end;
  i := 1; while cc[i] = 0 do inc(i);
  for j := i to lcc do write(cc[j]);
  writeln;
end;

procedure main;
var i, j, k : integer;
begin
  inc(lc);
  inc(lla);
  if lm < 0 then lm := 0;
  inc(lm);
  m[lm] := a[lla];
  if m[lm] >= 10 then
    begin inc(lm); m[lm] := m[lm - 1] mod 10; m[lm - 1] := m
[lm - 1] div 10; end
  else
    if lm > 1 then
    begin inc(lm); m[lm] := m[lm - 1]; m[
I do not know why I got WA, either!!
Послано Sqr (5) 6 дек 2001 08:06
I also got WA many times. And I don't know why, either!
Re: Is the test data of 1153(Supercomputer) right? I think my program is exactly right, but WA!
Послано Pavel Atnashev 6 дек 2001 12:08
> I've tested a lot of data, and my program outputs the
right
> answers.

Yes, test data was wrong. I wonder, how one team got
accepted on real contest.