Поиск по этому блогу

среда, 2 ноября 2022 г.

Табло

На хоккейном стадионе в одном большом городе расположено большое прямоугольное табло. Оно имеет n строк и m столбцов (то есть состоит из n x m ячеек). Во время хоккейного матча это табло служит для отображения счета и времени, прошедшего с начала тайма, а в перерывах на нем показывают различную рекламу.
В связи с этим возникла задача проверки возможности показа на этом табло определенной рекламной заставки. Заставка также, как и табло, имеет размер n строк на m столбцов. Каждая из ячеек заставки окрашена в один из четырех цветов - трех основных: красный - R, зеленый - G, синий - B и черный - .(точка).

Каждая из ячеек табло характеризуется своими цветопередаточными возможностями. Любая из ячеек табло может отображать черный цвет - это соответствует тому, что на нее вообще не подается напряжение. Также каждая из ячеек может отображать некоторое подмножество множества основных цветов. В этой задаче эти подмножества будут кодироваться следующим образом:

0 - ячейка может отображать только черный цвет;
1 - ячейка может отображать только черный и синий цвета;
2 - ячейка может отображать только черный и зеленый цвета;
3 - ячейка может отображать только черный, зеленый и синий цвета;
4 - ячейка может отображать только черный и красный цвета;
5 - ячейка может отображать только черный, красный и синий цвета;
6 - ячейка может отображать только черный, красный и зеленый цвета;
7 - ячейка может отображать только черный, красный, зеленый и синий цвета.

Напишите программу, которая по описанию табло и заставки определяет: возможно ли на табло отобразить эту заставку.

Входные данные

Первая строка входного файла INPUT.TXT содержит целые числа n и m (1 ≤ n, m ≤ 100). Далее идут n строк по m символов каждая - описание заставки. Каждый из символов описания заставки принадлежит множеству {R, G, B, .} . Их значения описаны выше.
После этого идет описание табло. Оно содержит n строк по m чисел, разделенных пробелами. Значения чисел описаны выше.

Выходные данные

В выходной файл OUTPUT.TXT выведите YES, если на табло возможно отобразить заставку и NO - в противном случае.

Примеры

INPUT.TXT

OUTPUT.TXT

1

3 3
. G B
R . B
R G .
0 1 2
3 4 5
6 7 0

NO

2

2 3
RGB
. G .
7 7 7
7 7 7

YES


Решение

var
m,n,i,j:integer;
s:array [1..100,1..100] of char;
a:array [1..100,1..100] of integer;
flag:boolean;
f,f1:text;
begin
assign(f,'input.txt');
reset(f);
assign(f1,'output.txt');
rewrite(f1);
readln(f,n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(f,s[i,j]);
readln(f);
end;
for i:=1 to n do
begin
for j:=1 to m do
read(f,a[i,j]);
readln(f);
end;
flag:=true;
for i:=1 to n do
for j:=1 to m do
case a[i,j] of
0: if (s[i,j]='G') or (s[i,j]='R') or (s[i,j]='B')then flag:= false;
1: if (s[i,j]='G') or (s[i,j]='R') then flag:= false;
2: if (s[i,j]='R') or (s[i,j]='B')then flag:= false;
3: if (s[i,j]='R') then flag:= false;
4: if (s[i,j]='G') or (s[i,j]='B')then flag:= false;
5: if (s[i,j]='G') then flag:= false;
6: if (s[i,j]='B')then flag:= false;
end;
if flag then write(f1,'YES') else write(f1,'NO');
close(f); close(f1);
end.

Комментариев нет:

Отправить комментарий