Падает решение задачи на последнем тесте выдавая Runtime error. Подскажите где в коде может быть ошибка.
Есть массив состоящий из n целых чисел a1, a2, ..., an. Нужно посчитать количество магических индексов в массиве а. Индекс x называется магическим, если он соответствует следующим правилам:
Вводные данные: Первая строка содержит целое число T, где T - количество тестов. Первая строка каждого теста содержит целое число n (1 ≤ n ≤ 10^6), где n - размер массива a. Вторая строка каждого теста содержит n целых чисел a1, a2, ..., an (1 ≤ ai ≤ 10^6), что дает массив a.
Вывод: Для каждого теста выведите в отдельной строке количество магических индексов в массиве a.
Примеры Ввода/Вывода:
+------------------+-------------------+
| стандартный ввод | стандартный вывод |
+------------------+-------------------+
| 2 | 3 |
| 8 | 1 |
| 2 1 3 4 6 5 7 9 | |
| 6 | |
| 4 2 7 9 8 10 | |
+------------------+-------------------+
В своем решении я сначала считывал весь массив а, а потом проверял каждый элемент соответствует ли он этим требованиям.
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio( 0);
int t, n;
scanf("%d", &t);
for( int i = 0; i < t; i++ )
{
int n;
scanf("%d", &n);
int* nn = new int[n];
int rez = 0;
for( int y = 0; y < n; y++ )
{
scanf("%d", &nn[y]);
}
for( int y = 0; y < n; y++ )
{
if( y > 0 && y < n-1 )
{
bool ats = true;
int q = y; // q = 1
while(q != 0)
{
if( nn[y] < nn[q-1] ){ats = false; break;}
q--;
}
int g = n - 1;
while(g > y)
{
if( nn[y] > nn[g] ){ats = false; break;}
g--;
}
if(ats == true){rez++;}
}
}
printf ("%d \n", rez);
}
return 0;
}
Для ускорения можно использовать следующее:
Проходим массив слева направо, поддерживая текущий максимум на каждый момент. Помечаем элементы, которые не меньше текущего максимума.
Проходим массив справа налево, определяя текущий минимум (с конца). Элементы, которые не не больше текущего минимума, и одновременно помечены при первом проходе - магические.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как преобразовать любой файл в строку, в которой файл будет представлен в бинарном виде?
Пересмотрела все похожие вопросы, заданные раннее, не нашла подходящего ответа
почему,когда я добавляю элементы в лист inter,уже после того,как я добавил 2 и 3 в сам двумерный лист,он автоматически продолжает добавлять 44 и 62 хотя...
Приложение грузит страницу с сайта в WebView ,на сайте нужно вводить данные в строкахПри вводе текста я не вижу что ввожу ,только после дополнительного...