Впарке города питсбурга есть чудесная аллея, состоящая из n посаженных в один ряд деревьев, каждое одного из k сортов. в связи с тем, что питсбург принимает открытый чемпионат байтландии по программированию, было решено построить огромную арену для проведения соревнований. так, согласно этому плану вся аллея подлежала вырубке. однако министерство деревьев и кустов воспротивилось этому решению, и потребовало оставить некоторые из деревьев в покое. согласно новому плану строительства все деревья, которые не будут вырублены, должны образовывать один непрерывный отрезок, являющийся подотрезком исходного. каждого из k видов деревьев требуется сохранить хотя бы по одному экземпляру. на вас возложена найти отрезок наименьшей длины, удовлетворяющий указанным ограничениям.
входные данные
в первой строке входного файла находятся два числа n и k ( 1 ≤ n , k ≤ 25 ). во второй строке входного файла следуют n чисел (разделенных пробелами), i -ое число второй строки задает цвет i -ого слева дерева в аллее. гарантируется, что присутствует хотя бы одно дерево каждого цвета
выходные данные
в выходной файл выведите два числа, координаты левого и правого концов отрезка минимальной длины, удовлетворяющего условию. если оптимальных ответов несколько, выведите любой.
примеры
входные данные
5 3
1 2 1 3 2
выходные данные
2 4
входные данные
6 4
2 4 2 3 3 1
выходные данные
2 6
По закону дистрибутивности раскроем скобки
(Av¬A)&(AvB)
Av¬A = 1, значит остаётся AvB
2) F =A&(¬AvB)
По тому же закону раскрываем скобки
(A&¬A)v(A&B)
A&¬A = 0, значит остаётся A&B
3. (AvB)&(¬BvA)&(¬CvB)
По закону склеивания (AvB)&(¬BvA) = A , получается, что выражение принимает вид
A&(¬CvB)
Можно раскрыть скобки, получим
A&¬C v A&B
4) F =(1v(AvB))v((AC)&1)
Скобка (1v(AvB)) = 1, так как 1 v ЧТОУГОДНО = 1
Получаем выражение
1v((AC)&1) = 1, так как 1 v ЧТОУГОДНО = 1
ответ 1
uses crt;
Var mas:array[1..1000, 1..1000] of integer;
N,M,i,j,k:integer;
Begin
Writeln('Введите размер матрицы N*M');
Write('N = ');
readln(N);
Write('M = ');
readln(M);
if (M>1000) or (N>1000) or (M<1) or (N<1)
then
Writeln('Ошибка, указанные значения выходят за пределы матрицы') else
Begin
Writeln('Введите элементы матрицы');
k:=0;
for i:=1 to N do
for j:=1 to M do
Begin
readln(mas[i,j]);
if (mas[i,j] mod 2 = 0) then k:=k+1;
end;
Writeln();
Writeln('Исходная матрица');
for i:=1 to N do
Begin
for j:=1 to M do
Begin
Write(mas[i,j], ' ')
end;
Writeln();
end;
Writeln();
Writeln('Количество четных элементов = ',k);
end;
readln;
end.