QN; вот вопрос. Я не знаю, где мой алгоритм неверен. Помогите мне найти pls
Учитывая массив A длины N. Нам нужно вычислить следующий больший элемент для каждого элемента в данном массиве. Если следующий больший элемент недоступен в данном массиве, нам нужно заполнить '_' в этом месте индекса.
Входные данные: Первая строка содержит целое число T, количество тестовых случаев. Для каждого теста первая строка содержит целое число n, размер массива. Следующая строка содержит n разделенных пробелом целых чисел, обозначающих элементы массива.
Вывод: для каждого тестового примера вывод представляет собой массив, который отображает следующий больший элемент к элементу с этим индексом.
Constraints:
1 <= T <= 100
1 <= N <= 100
-106 <= Ai <= 106
Example:
Input
2
9
6 3 9 8 10 2 1 15 7
4
13 6 7 12
Output:
7 6 10 9 15 3 2 _ 8
_ 7 12 13
Объяснение: Тестовый случай 1: Здесь каждый элемент массива имеет следующий больший элемент, но по индексу 7, 15 - это самый большой элемент данного массива, и ни один другой элемент не больше 15, поэтому при индексе 15 мы заполняем ''. Тестовый пример 2: здесь, с индексом 0, 13 является наибольшим значением в данном массиве, и никакой другой элемент массива не больше 13, поэтому в индексе 0 мы заполняем ''.
Мое решение:
//NOT SOLVED YET
#include<iostream>
using namespace std;
int main()
{
int a[10]={6 ,3 ,9, 8 ,10, 2 ,1, 15, 7};
int b[10],flag=0,big=-1,i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(i==j)continue;
if((a[j]>a[i]) && (flag==0))
{
big=a[j];
flag=1;
}
else if(a[j]<big && big>a[i] && flag==1)
big=a[j];
}
if(big==-1)cout<<'_';
else cout<<big<<' ';
big=-1;
flag=0;
}
}
вывод, который я получаю:
2 2 2 2 7 1 0 _ 2 1