Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#1 2006-10-09 17:25:26

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Train tour F problem

const
   a : array [1..8, 1..8] of byte =
   (
   (1, 0, 1, 0, 1, 0, 1, 0),
   (0, 1, 0, 1, 0, 1, 0, 1),
   (1, 0, 1, 0, 1, 0, 1, 0),
   (0, 1, 0, 1, 0, 1, 0, 1),
   (1, 0, 1, 0, 1, 0, 1, 0),
   (0, 1, 0, 1, 0, 1, 0, 1),
   (1, 0, 1, 0, 1, 0, 1, 0),
   (0, 1, 0, 1, 0, 1, 0, 1)
   );
var
   n, k, i, j, now, x, y : byte;
   _x, _y : char;
   f : boolean;
   s : string;
begin
   readln(n);
   for i := 1 to n do begin
      readln(k);
      if k <> 0 then begin
         readln(_x, _y);
         x := ord(_x) - 48;
         y := ord(_y) - 48;
         now := a[x, y];
      end;
      f := true;
      for j := 2 to k do begin
         readln(_x, _y);
         if f then begin
            x := ord(_x) - 48;
            y := ord(_y) - 48;
            if a[x, y] <> now then f := false;
         end;
      end;
      if f then s := s + '1'
           else s := s + '0';
   end;
   writeln(s);
end.
Обратюся ко всем неравнодушным smile Скажите это действительно мое решение слишком по времени загибается или какието проблемы с readln или еще что-то


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#2 2006-10-09 18:40:47

Присяжнюк А.В.
Новий користувач
Звідки: Бердичів СЗОШ 17
Зареєстрований: 2005-11-19
Повідомлень: 140
Вебсайт

Re: Train tour F problem

Читайте технические условия: там ясно написано, что нужно писать read, а не readln. Именно из-за него и Time out - об этом уже не раз писалось.
С уважением - АВП


Права на ошибку не имеет тот, кто ничего не делает...

Поза форумом

 

#3 2006-10-11 14:51:54

Програмёр
Новий користувач
Зареєстрований: 2006-10-11
Повідомлень: 16

Re: Train tour F problem

NECRO, А ЗАЧЕМ ТАК ПАМЯТЬ МАШИНИ ЗАГРОМОЖДАТЬ? (масив на 64 елемента, да и все byte)
Можно их сделать boolean, а можно найти алгоритм по-лучше (хотя у тебя тоже умно), например:
взять первую считаную клетку, а потом сравнивать с ней остальные. если x-first_x нечётное число, то и y-first_y должно быть нечётным, иначе цвета клеток разные. если x-first_x чётное число, то и y-first_y должно быть чётным, иначе также цвета клеток разные. Всёго два условия и 5-6 переменных. :-)
____________________________________________________________________________________

Главное - стремление, а умение приложиться

Поза форумом

 

#4 2006-10-11 16:48:02

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: Train tour F problem

переменная типа boolean занимает ровно столько же памяти сколько и переменная типа byte, а именно, один байт.


ICQ 233-416-344

Поза форумом

 

#5 2006-10-11 18:17:06

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Re: Train tour F problem

Дам-с и впарвду таймы из-за памяти я думаю. Ридом считывается не полне верно как ни странно так как я считываю чаром то конец строки также считывется как перевод каретки и т.д. 10 13
потому надо брать еще две переменных.
На счет решенеия просто оно очень наглядное и очевидное для програминга потому так и делал ясно что подразумевалось анализ парности не парности


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#6 2006-10-11 18:40:39

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Re: Train tour F problem

Блин невернится что немогу заАксептить эту задачу уже все переделал на рид и теперь WA


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#7 2006-10-11 18:48:24

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Re: Train tour F problem

Хочетса плакать smile кто увилит укажите мне на ошибку плз
const
   a : array [1..64] of byte =
   (
   1, 0, 1, 0, 1, 0, 1, 0,
   0, 1, 0, 1, 0, 1, 0, 1,
   1, 0, 1, 0, 1, 0, 1, 0,
   0, 1, 0, 1, 0, 1, 0, 1,
   1, 0, 1, 0, 1, 0, 1, 0,
   0, 1, 0, 1, 0, 1, 0, 1,
   1, 0, 1, 0, 1, 0, 1, 0,
   0, 1, 0, 1, 0, 1, 0, 1
   );
type
   byte = integer;
var
   n, k, i, j, now, p : byte;
   f : boolean;
function chk(p : byte) : byte;
begin
   chk := ((p div 10) - 1) * 8 + (p mod 10);
end;
begin
   read(n);
   for i := 1 to n do begin
      read(k);
      if k <> 0 then begin
         read(p);
         now := a[chk(p)];
      end;
      f := true;
      for j := 2 to k do begin
         read(p);
         if f and (a[chk(p)] <> now) then f := false;
      end;
      if f then write(1) else write(0);
   end;
end.


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#8 2006-10-12 15:15:39

Юрко Савеленко
Новий користувач
Зареєстрований: 2006-10-12
Повідомлень: 9

Re: Train tour F problem

А можна умову задачі?
Спроба без умови: write('1') замість write(1)?

Відредаговано Юрко Савеленко (2006-10-12 15:19:02)

Поза форумом

 

#9 2006-10-12 16:27:04

Програмёр
Новий користувач
Зареєстрований: 2006-10-11
Повідомлень: 16

Re: Train tour F problem

necro, хоть не совсем разобрался в задаче (коментариев не хватает), но могу с увереностю сказать, что проблема в том, что вывод данных проходит по-середине ввода, то есть:
вводим первый вариант,
выводим первый вариант;
вводим второй вариант,
выводим второй вариант и т.д.
А это не по условию задачи. :-)

Поза форумом

 

#10 2006-10-12 18:19:29

Ivan
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 218

Re: Train tour F problem

write('1') замість write(1) - будет ровно то же самое
2Програмёр разницы нету.


ICQ 233-416-344

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt