Улаган
01.08.2020 05:24

D. унисон ≡
входной файл:
стандартный вход
 
ограничение времени:
1 сек
выходной файл:
стандартный выход
 
ограничение памяти:
512 мб
максимальный :
100
 

условие
два друга-ирландца фаолан и леон любят петь, особенно в праздники, когда они могут собраться и петь песни вместе. хоть они и друзья, у них не так много общих песен, но это не мешает им пытаться петь разные песни одновременно.
друзья обнаружили, что разные строки двух песен совместимы и могут быть спеты в унисон, если у строк одинаковая интонация, а количество слогов в этих строках совпадает. интонация строки считается восклицательной, если в строке есть восклицательный знак (ascii 33), и нейтральной во всех остальных случаях.
для слогораздела фаолан предлагает использовать общепринятую систему, в которой слогообразующим является гласный звук, и при этом два гласных звука не могут находиться в пределах одного слога. в случае, когда слово целиком состоит из согласных, оно за слог не считается, а производимый им согласный звук сливается со слогом в следующем или предыдущем слове.
когда фаолан и леон поют, они следуют по текстам своих песен слева направо, сверху вниз, с удовольствием распевая в унисон совместимые строки и пропуская все остальные.
сейчас друзья планируют заранее свое выступление, и им интересно, для данных двух песен, сколько суммарно децисекунд они могут пропеть в унисон при условии, что каждый слог пропевается в течение одной децисекунды. естественно, друзей интересует максимально возможная величина.
формат входных данных
в первой строке входных данных содержатся целые числа
n
m
nm
: количество строк в первой и второй песне соответственно. далее следуют
n
+
m
n+m
строк, содержащих текст первой и затем второй песни. каждая строка может состоять только из печатных ascii символов.
формат выходных данных
выходные данные должны содержать одно целое число: максимальное количество децисекунд, в течение которых друзья могут петь в унисон.
ограничения
1

n
,
m

10
6
1≤n,m≤106
n

m

10
7
n∗m≤107
длина каждой строки не превосходит
50
50
.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
aleshibin
15.11.2021 15:50
Const m=4; n=15;
var
  i,j,j0: integer;
  a:array[1..m,1..n] of integer;
  jExit,iExit:Boolean;
begin
  Randomize;
  for i:=1 to m do begin
    writeln;
    for j:=1 to n do begin
      a[i,j]:=random(2);
      write(a[i,j]:2)
      end
    end;
  writeln;
  j:=0; jExit:=false;
  repeat
    j:=j+1; i:=1; iExit:=false;
    if a[i,j]=0 then begin
      repeat
        i:=i+1;
        if a[i,j]<>0 then iExit:=true
      until iExit or (i=m);
      if i=m then jExit:=true
      end
    until jExit or (j=n);
  if a[i,j]=0 then writeln('Нулевой столбец ',j)
  else writeln('Нет нулевых столбцов');
end.

Тестовый пример:

 0 1 1 1 1 0 1 0 1 0 0 0 0 0 1
 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0
 1 1 0 0 0 1 0 1 1 1 1 1 0 1 1
 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0
Нулевой столбец 13
0,0(0 оценок)
Ответ:
vikaSnal87
10.11.2021 09:42
Потому что соединение не идеально, оно прерывается, некоторые данные по пути теряются. Допустим, я хочу передать файл по интернету. Если файл небольшой, то велика вероятность, что он не пострадает. В противном случае можно потратить много времени на передачу части файла, после чего данные передадутся с ошибкой, которую мы обнаружим только после передачи всего файла. Передавая информацию пакетами же можно этого избежать, так как любая потеря данных будет сразу видна по плохому пакету. После этого можно эту ошибку сразу и обработать и, допустим запросить повтор предыдущего пакета или попытаться починить пакет, прибывший с ошибкой.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота