Текстовый файл состоит не более чем из 1 200 000 символов
Будем последовательно считывать символы из файла, постоянно храня последние
Приведём решение данной задачи на языке PascalABC.
var k, max: integer;
c1, c2, c3, c4: char;
f: text;
begin
assign(f,'C:\24.txt');
reset(f);
c1 := '0';
c2 := '0';
c3 := '0';
c4 := '0';
k := 0;
max := 0;
while not Eof(f) do begin
c4 := c3;
c3 := c2;
c2 := c1;
read(f, c1);
if (c4 = 'X') and (c3 = 'Z') and (c2 = 'Z') and (c1 = 'Y') then begin
if k > max then
max := k;
k := 0;
k := k + 3;
end
else begin
k := k + 1;
end;
end;
if k > max then
max := k;
writeln(max);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 1713.
Ответ: 1713.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Владимира Лукьянчикова на языке PascalABC.
reset(input, '24.txt');
Print(ReadString.IndicesOf('XZZY').Incremental.Max + 2)
Приведём другое решение на языке Python.
with open("24.txt") as f:
p = f.readline()
max_len = 0
cur_len = 3
for i in range(3, len(p)):
if p[i- 3] == "X" and p[i - 2] == "Z" and p[i - 1] == "Z" and p[i] == "Y":
if max_len < cur_len:
max_len = cur_len
cur_len = 3
else:
cur_len += 1
if max_len < cur_len:
max_len = cur_len
print(max_len)
Приведём решение Папуша Алексея на языке Python.
with open("24.txt","r") as t:
f=t.readline()
max_len=0
cur_len=0
f=f.replace("XZZY","0")
for i in range(len(f)):
if f[i]=="0":
max_len=max(max_len,cur_len+3)
cur_len=3
else:
cur_len+=1
max_len=max(max_len,cur_len)
print(max_len)
Приведём решение Фефелова Сергея на языке Python.
p = open("24.txt").readline()
max_len = cur_len = min(3, len(p))
for i in range(3, len(p)):
if p[i-3:i+1] == "XZZY":
max_len = max(max_len, cur_len)
cur_len = 3
else: cur_len += 1
max_len = max(max_len, cur_len)
print(max_len)
Приведём решение Бориса Савельева на языке Python.
f=open('24.txt').readline().split('XZZY')
maxi=0
for i in range (0,len(f)):
maxi=max(len(f[i])+6,maxi)
print(maxi)
Приведём решение Юрия Красильникова на языке Python.
d = [len(s) for s in open('244.txt').readline().split('XZZY')]
d[0] -= 3
d[-1] -= 3
print(max(d) + 6)
Приведём решение Александра Винника на языке Python.
print(len(max(open('24.txt').readline().split('XZZY'), key=lambda x: len(x))) + 6)
Приведём решение Даниила Комлева на языке Python.
print(len(max(open('24.txt').readline().split('XZZY'),key=len))+6)

