(Нужно построить блок схему с определенной алгоритмической структурой , для решения задачи)
Задача : В одномерном массиве A = (a1, а2, ..., аn) группу элементов, содержащую наибольшее число подряд идущих отрицательных элементов, переписать в «хвост» массива. Элементы массива вводятся случайным образом.
Ответы
Ответ:
На фото
Объяснение:
Код на с++:
#include <bits/stdc++.h>
#define N 100010
using namespace std;
int main() {
int n;
int cnt, cnt_max, start, start_max, tail_cnt;
int a[N], temp[N];
cin >> n;
cnt = cnt_max = start = start_max = tail_cnt = 0;
for(int i = 0; i < n; i++)
{
cin >> a[i];
if(a[i] < 0)
{
if(cnt == 0)
{
start = i;
}
cnt++;
if(cnt > cnt_max)
{
cnt_max = cnt;
start_max = start;
}
}
else
{
cnt = 0;
}
}
if(cnt_max != 0)
{
for(int i = start_max; i < n; i++)
{
temp[i] = a[i];
}
for(int i = n - 1, j = 0; j < cnt_max; i--, j++)
{
a[i] = temp[start_max + cnt_max - j - 1];
}
tail_cnt = n - (start_max + cnt_max);
for(int i = n - cnt_max - 1, j = 0; j < tail_cnt; i--, j++)
{
a[i] = temp[n - j - 1];
}
}
for(int i = 0; i < n; i++)
{
cout << a[i] << ' ';
}
return 0;
}

