Помогите решить задачу по С++!Срочно!
Дана последовательность целых чисел. Требуется вычислить максимальную длину участка из подряд идущих элементов последовательности вида 1, 2, 3, ..., k.
Формат ввода
Во входном файле записаны через пробел члены последовательности в количестве не менее 1 и не более 107. Члены последовательности – целые числа, по модулю не превосходящие 109.
Формат вывода
В выходной файл требуется вывести единственное число − ответ в задаче (если участка указанного вида не существует, то ответ – 0).
НУЖНО НАПИСАТЬ БЕЗ МАССИВОВ.ТОЛЬКО ЦИКЛЫ И IFы .Ломаю голову уже час,не знаю как решить.
7 класс пишешь, но тут с++ мол. Ну и подобные задачи под систему решают, там файл IN и OUT вроде и др...вам там лучше известно.
А решить если просто из файла in.txt прочитать:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char** argv)
{
ifstream fin("in.txt");
int x, xp, n=0, nmax=0;
while( fin >> x )
{
if( n == 0 || x - xp == 1 )
{
n++;
}
else
{
if( n > nmax ) nmax = n;
n = 1;
}
xp = x;
}
if( n > nmax ) nmax = n;
fin.close();
cout << nmax;
return 0;
}
def max_consecutive_sequence_length(sequence):
max_length = 0
current_length = 0
expected_number = 1 # ожидаем следующее число в последовательности
for num in sequence:
if num == expected_number:
current_length += 1
expected_number += 1
elif num == 1:
# если встретили 1, это начало новой последовательности
current_length = 1
expected_number = 2 # ожидаем следующее число
else:
# сброс длины текущей последовательности
current_length = 0
expected_number = 1 # начинаем заново с 1
# обновляем максимальную длину последовательности
max_length = max(max_length, current_length)
return max_length
if __name__ == "__main__":
import sys
input_data = sys.stdin.read ().strip() # чтение данных
sequence = list(map(int, input_data.split())) # преобразование в список целых чисел
result = max_consecutive_sequence_length(sequence)
print(result) # вывод результата