ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Common Board

Is the test data of 1153(Supercomputer) right? I think my program is exactly right, but WA!
Posted by Li, Yi 5 Dec 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!!
Posted by Sqr (5) 6 Dec 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!
Posted by Pavel Atnashev 6 Dec 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.