На вход программы подаются результаты измерений, выполняемых прибором с
интервалом 1 минуту. Все данные – целые числа (возможно, отрицательные). Требуется
найти наибольшую сумму двух результатов измерений, выполненных с интервалом не
менее, чем в 7 минут.
Описание входных данных:
В первой строке вводится одно целое положительное число – количество измерений N,
которое может быть очень велико. Гарантируется, что N > 7 Каждая из следующих N строк
содержит по одному целому числу – результат очередного измерения.
Описание выходных данных
Программа должна вывести одно число наибольшую сумму двух результатов измерений,
выполненных с интервалом не менее, чем в 7 минут.
Пример входных данных:
10
1
2
3
4
5
6
7
8
9
10
Пример выходных данных для приведённого выше примера входных данных:
13
C/C++
Написать программу на С++ (без вектора)
#include <iostream>
#include <tuple>
using namespace std;
template<typename Type>
Type input() {
Type value{};
cin >> value;
return value;
}
template<typename Type>
void scan(Type& value) {
value = input<Type>();
}
template<typename Type, typename... Args>
void scan(Type& value, Args&... arg) {
value = input<Type>();
scan(arg...);
}
int main() {
const auto x = 8;
unsigned n;
cin >> n;
if (n < x) exit(0);
int a, b, c, d, e, f, g, h;
scan(a, b, c, d, e, f, g, h);
auto max = numeric_limits<int>::min();
auto sum = max;
n -= 8;
do {
tie(a, b, c, d, e, f, g, h) = make_tuple(b, c, d, e, f, g, h, a);
if (a > max) max = a;
cin >> a;
if (a + max > sum) sum = a + max;
} while (--n);
cout << sum << '\n';
system("pause > nul");
}
P.S. И чем вам вектор не угодил?
#include <tuple>
using namespace std;
template<typename Type>
Type input() {
Type value{};
cin >> value;
return value;
}
template<typename Type>
void scan(Type& value) {
value = input<Type>();
}
template<typename Type, typename... Args>
void scan(Type& value, Args&... arg) {
value = input<Type>();
scan(arg...);
}
int main() {
const auto x = 8;
unsigned n;
cin >> n;
if (n < x) exit(0);
int a, b, c, d, e, f, g, h;
scan(a, b, c, d, e, f, g, h);
auto max = numeric_limits<int>::min();
auto sum = max;
n -= 8;
do {
tie(a, b, c, d, e, f, g, h) = make_tuple(b, c, d, e, f, g, h, a);
if (a > max) max = a;
cin >> a;
if (a + max > sum) sum = a + max;
} while (--n);
cout << sum << '\n';
system("pause > nul");
}
P.S. И чем вам вектор не угодил?
Александр Пустомолотов
Он слишком медленный.

#include < iostream >
using namespace std;
int main()
{
unsigned int n;
cout << "Enter N count";
cin >> n;
int* array = new int[n];
for (int i = 0; i < n; i++)
array[i] = rand() % 201 - 100;
for (int i = 0; i < n; i++)
cout << array[i] << " "; cout << endl;
int left = 0, right = 7;
int summ = array[0] + array[7];
for (int i = 0; i < n - 7; i++)
{
if (array[i] > array[left]) left = i; //mem max left
if (array[i + 7] + array[left] > summ) summ = array[i + 7] + array[left]; //mem max sum
}
cout << summ;
delete[] array;
}
using namespace std;
int main()
{
unsigned int n;
cout << "Enter N count";
cin >> n;
int* array = new int[n];
for (int i = 0; i < n; i++)
array[i] = rand() % 201 - 100;
for (int i = 0; i < n; i++)
cout << array[i] << " "; cout << endl;
int left = 0, right = 7;
int summ = array[0] + array[7];
for (int i = 0; i < n - 7; i++)
{
if (array[i] > array[left]) left = i; //mem max left
if (array[i + 7] + array[left] > summ) summ = array[i + 7] + array[left]; //mem max sum
}
cout << summ;
delete[] array;
}

Леша Не Спартак!
#include
int findMaxSum(int *array, unsigned int size, unsigned int delay)
{
int max = array[0] + array[delay];
for(unsigned int i=0;i max)
{
max = array[i] + array[i+delay];
}
}
return max;
}
int main()
{
unsigned int size; std::cout<<"N = "; std::cin>>size;
int array[size];
for(unsigned int i=0;i<size;i++)
{
std::cout<<"array["<<i<<"] = "; std::cin>>array[i];
}
std::cout<<findMaxSum(array,size,7)<<std::endl;
return 0;
}
int findMaxSum(int *array, unsigned int size, unsigned int delay)
{
int max = array[0] + array[delay];
for(unsigned int i=0;i max)
{
max = array[i] + array[i+delay];
}
}
return max;
}
int main()
{
unsigned int size; std::cout<<"N = "; std::cin>>size;
int array[size];
for(unsigned int i=0;i<size;i++)
{
std::cout<<"array["<<i<<"] = "; std::cin>>array[i];
}
std::cout<<findMaxSum(array,size,7)<<std::endl;
return 0;
}
Вадим Шишкин
решение не до конца верное. если подставишь большое число в самое начало последовательности то сразу будет видно, что найденный ответ неверен -- это число будет проигнорировано.
надо чуть дописать -- сохранять в отдельной переменной на каждой итерации максимальное значение array[i] . и использовать уже эту переменную
надо чуть дописать -- сохранять в отдельной переменной на каждой итерации максимальное значение array[i] . и использовать уже эту переменную
Леша Не Спартак!
Немного внимательнее прочитал задание, не понял сначала что нужно найти суммы всех абсолютно пар между которыми "не менее, чем в 7 минут", т. е. может быть и 8 и 9 и 10

Дмитрий Величко
Это какой компилятор позволяет создать массив с заранее неизвестным размером?
Похожие вопросы
- Написать программу на языке Си
- Написать программы на СИ
- Некорректно работает написанная программа
- Помогите написать программу на С++
- Написать программу в С++ (нахождение площади трапеции)
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.
- Помогите написать программу на С
- Помогите написать программу на C++
- Помогите написать программу на с++
- Помогите написать программу на с++