Уковбоя влада день рождения! на праздник собрались n детей. чтобы поздравить ковбоя, дети решили водить вокруг влада хоровод. среди детей, пришедших к владу, есть и высокие, и низкие, поэтому если они встанут в хороводе как угодно, многим из них может быть неудобно, потому что если в хороводе
рядом стоят высокий и низкий ребёнок, им трудно держаться за руки. поэтому дети решили встать в хоровод так, чтобы максимальная разность ростов двух соседних детей была минимальной. более формально, пусть n детей выстроились в хоровод. пронумеруем их целыми числами от 1 до n так, чтобы справа от
ребёнка с номером i стоял ребёнок с номером i + 1, а справа от ребёнка с номером n стоял ребёнок с номером 1. тогда неудобством этого хоровода назовём максимальную разность между ростом детей, которые стоят рядом. обратите внимание, что разностью в росте двух детей называется разность между ростом
более высокого и более низкого ребёнка, таким образом, разность в росте двух детей всегда неотрицательна. детям и определите, в каком порядке им надо выстроиться в круг, чтобы минимизи- ровать неудобство получившегося хоровода. обратите внимание, что все n детей должны оказаться в хороводе. формат
входных данных в первой строке содержится одно целое число n (2 ⩽ n ⩽ 105 ) — количество детей, которые пришли на день рождения ковбоя влада. во второй строке заданы n целых чисел ai (1 ⩽ ai ⩽ 109 ) — рост каждого из детей. рост детей задан в нанометрах и уменьшен на 109 , таким образом, рост
ребёнка с ai = 1 чуть выше метра, а рост ребёнка с ai = 109 составляет два метра. формат выходных данных выведите n целых чисел — значения роста детей в порядке, в котором они должны встать в хоровод. в этом порядке соседними будут дети с номерами i и i + 1, а также дети с номерами 1 и n. если
оптимальных хороводов несколько, то выведите любой из них. примеры стандартный ввод стандартный вывод 5 2 1 1 3 2 1 2 3 2 1 3 30 10 20 10 20 30
Ctrl+C — стандартное и часто используемое при работе на компьютере сочетание клавиш для копирования данных в буфер обмена Windows. Чтобы скопировать некоторый фрагмент текста, табличных данных и т. д. в буфер, нужно сначала выделить этот фрагмент (как правило, это делается нажиманием и удерживанием левой кнопки мыши, после чего мышь перемещают по фрагменту, который необходимо выделить и отпускают кнопку
Ctrl+V — стандартное и часто используемое при работе на компьютере сочетание клавиш для вставки данных из буфера обмена Windows. Позволяет не набирать повторно один и тот же текст, а скопировать его из другого или этого же документа.
wog18303
сейчас
Информатика
1 - 4 классы
+18 б.
ответ дан
с программой, даже условие не могу понять хотя-бы натолкнуть на мысль
Условие
Напишите функцию, которая как результат будет возвращать подпоследовательность элементов массива, начиная с позиции X до позиции Y включительно в обратном порядке с шагом Z как новый массив. По умолчанию шаг должен быть равен 1.
Ваша задача для заданного массива вывести срез с шагом 1 и с шагом, заданным с клавиатуры.
Формат входных данных
В первой строке задается натурально число N, (N ≤ 10000)- размер массива.
В следующей строке вводятся N целых чисел, по модулю не превосходящих 109 - элементы массива.
В последней строке вводятся три целых числа X, Y и Z (0 ≤ X ≤ Y < N, 0 < Z < N)- границы и шаг среза соответственно.
Формат выходных данных
В первой строке выведите перевернутый фрагмент массива с шагом 1.
Во второй строке выведите перевернутый фрагмент массива с шагом Z.
1
СМОТРЕТЬ ОТВЕТ
ДОБАВИТЬ ОТВЕТ
Спросите wog18303 о заданном вопросе...
wog18303 ждёт твоего решения.
ответь на вопрос и заработай .
ответ
5,0/5
1
slysnenko
хорошист
34 ответов
469 пользователей, получивших
#include <iostream>
#include <vector>
using namespace std;
void srez(vector<int> arr, int x, int y, int z = 1) {
for (int i = y; i >= x; i -= z) {
cout << arr[i] << ' ';
}
cout << '\n';
}
int main() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; ++i) cin >> arr[i];
int x, y, z;
cin >> x >> y >> z;
srez(arr, x, y);
srez(arr, x, y, z);
return 0;
}
Объяснение: