Top.Mail.Ru
Ответы

Помогите решить задачу по С++!Срочно!

Дана последовательность целых чисел. Требуется вычислить максимальную длину участка из подряд идущих элементов последовательности вида 1, 2, 3, ..., k.

Формат ввода
Во входном файле записаны через пробел члены последовательности в количестве не менее 1 и не более 107. Члены последовательности – целые числа, по модулю не превосходящие 109.

Формат вывода
В выходной файл требуется вывести единственное число − ответ в задаче (если участка указанного вида не существует, то ответ – 0).


НУЖНО НАПИСАТЬ БЕЗ МАССИВОВ.ТОЛЬКО ЦИКЛЫ И IFы .Ломаю голову уже час,не знаю как решить.

По дате
По рейтингу
Аватар пользователя
Высший разум
7мес

7 класс пишешь, но тут с++ мол. Ну и подобные задачи под систему решают, там файл IN и OUT вроде и др...вам там лучше известно.
А решить если просто из файла in.txt прочитать:

12345678910111213141516171819202122232425262728293031
 #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; 
} 
Аватар пользователя
Профи
7мес

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) # вывод результата