Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 03.10.2020
Сообщений: 1

Гистограмма (задача): код проходит не все тесты

03.10.2020, 13:56. Показов 2329. Ответов 1

Студворк — интернет-сервис помощи студентам
Есть задача:
Гистограмма является многоугольником, сформированным из последовательности прямоугольников, выровненных на общей базовой линии. Прямоугольники имеют равную ширину, но могут иметь различные высоты. Обычно гистограммы используются для представления дискретных распределений, например, частоты символов в текстах. Отметьте, что порядок прямоугольников очень важен. Вычислите область самого большого прямоугольника в гистограмме, который также находится на общей базовой линии.

Входные данные
В первой строке входного файла записано число N (0<N≤106) − количество прямоугольников гистограммы. Затем следует N целых чисел h1…hn, где 0≤hi≤109. Эти числа обозначают высоты прямоугольников гистограммы слева направо. Ширина каждого прямоугольника равна 1.

Выходные данные
Выведите площадь самого большого прямоугольника в гистограмме. Помните, что этот прямоугольник должен быть на общей базовой линии.

Примеры:
Входные данные
7 2 1 4 5 1 3 3
Выходные данные
8

Я написал код, но он проходит не все тесты. Помогите, пожалуйста, разобраться.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <stack>
 
int main(){
    int n, current, cnt = 1;
    long long maxS = -1, curS;
    long long minimum_height = 10e9 + 1;//, maximum_height = -1;
    std::stack <long long> hs;
    hs.push(-2); // zero push
    std::cin >> n;
    for (int i = 0; i < n + 1; ++i){
        if (i < n) {
            std::cin >> current;
        }
        else { // последняя итерация, обрабатываем все, что до последнего столбца
            current = -1;
        }
        if (current > hs.top()) hs.push(current);
        else { // спускаемся "вниз", ищем макс площадь
            while (hs.top() >= current){
                curS = hs.top() * cnt++;
                if (curS >= maxS) maxS = curS;
                hs.pop(); // про обработанные элементы можно благополучно забыть
            }
            curS = current * cnt;
            if (curS > maxS) maxS = curS; // сравнить с current
            cnt = 1;
            hs.push(current);
        }
        if (minimum_height > current && i < n) minimum_height = current;
//        if (maximum_height < current) maximum_height = current;
    }
    // последняя проверка, может так случиться, что площадь n * min_height больше любой другой
    curS = minimum_height * n;
    if (curS > maxS) maxS = curS;
    std::cout << maxS;
    return 0;
}
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2020, 13:56
Ответы с готовыми решениями:

Задача преобразования XML не проходит все тесты
Задача не проходит все тесты. Примеры, указанные в условии отрабатывают, а потом тестировщик пробует еще несколько различных вариантов...

Задача «Форматирование кода» не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

Задача «Телефонная книга» не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

1
Искусственный интеллект
 Аватар для NQUARE
112 / 82 / 34
Регистрация: 26.08.2020
Сообщений: 590
Записей в блоге: 1
03.10.2020, 19:14
Цитата Сообщение от sphinx Посмотреть сообщение
код проходит не все тесты
Где вы их делайте?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2020, 19:14
Помогаю со студенческими работами здесь

Задача форматирования таблицы не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

Задача «Телефонная книга» не проходит все тесты
Задача не проходит все тесты. Пример, указанный в условии работает, а потом тестировщик пробует еще несколько различных вариантов входных...

Задача «Форматирование кода» не проходит все тесты, уже на третьем заваливается
Задача «Форматирование кода» не проходит все тесты, уже на третьем заваливается. Примеры, указанные в условии работают, а потом тестировщик...

Задача «Форматирование кода» не проходит все тесты, теперь на 9-ом тесте заваливается
Задача «Форматирование кода» не проходит все тесты, теперь на 9-ом тесте заваливается. Примеры, указанные в условии работают, а потом...

Код на нахождение max длины последовательности не проходит все тесты
Уважаемые форумчане, здравствуйте. Нужен ваш совет. Условие задачи: Ввести n-ое кол-во строк не более 1_000 шт., каждая строка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru