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

Для каждого запроса определить максимально возможную высоту на которую можно подняться

17.10.2022, 19:19. Показов 1067. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У Тимура есть лестница с n ступеньками. Ступенька i выше предыдущей на ai метров. Первая ступенька на a1 метр выше земли, а земля находится на высоте 0 метров.

Лестница из первого примера.
У Тимура есть q запросов, каждый из которых обозначается целым числом k1,…,kq. Для каждого запроса ki выведите максимально возможную высоту, на которую Тимур может подняться, поднимаясь по ступенькам, если длина его ног ki. Тимур может подняться на j-ю ступеньку только в том случае, если длина его ног не меньше aj. Другими словами, ki≥aj для каждой ступеньки j.

Обратите внимание, что вы должны ответить на каждый вопрос независимо.

Входные данные
Первая строка содержит одно целое число t (1≤t≤100) — количество наборов входных данных.

Первая строка каждого набора содержит два целых числа n,q (1≤n,q≤2⋅10^5) — количество ступенек и количество запросов, соответственно.

Вторая строка каждого набора содержит n целых чисел (1≤ai≤10^9) — разницы в высотах ступенек.

Третья строка каждого теста содержит q целых чисел (0≤ki≤10^9) — числа для каждого запроса.

Гарантируется, что сумма n не превышают 2⋅10^5, сумма q не превышают 2⋅10^5.

Выходные данные
Для каждого набора выведите q целых чисел - ответ на каждый запрос.

Обратите внимание, что ответ на некоторые запросы не помещается в 32-битный целочисленный тип, поэтому вы должны использовать как минимум 64-битный целочисленный тип в вашем языке программирования (например, long long для C++).
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <algorithm>
 
using namespace std;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    cin >> t;
    for (int z = 0; z < t; z++)
    {
        int q;
        int n;
        cin >> n >> q;
        int arr[10000] = {};
        int rar[10000] = {};
        int long long rrr[10000] = {};
        int long long sum = 0;
        int f = 2;
        rar[0] = sum;
        rrr[0] = sum;
        cin >> rar[1];
        rrr[1] = rar[1];
        sum += rar[1];
        for (int i = 1; i < n; i++)
        {
            cin >> arr[i];
            sum += arr[i];
            if (arr[i] > rar[f - 1])
            {
                rar[f] = arr[i];
                rrr[f] = sum;
                f++;
            }
            rrr[f - 1] = sum;
 
        }
        rar[f] = 1000000000;
        for (int i = 0; i < q; i++)
        {
            int w = 0;
            cin >> w;
            int low = 0;
            int high = f;
            bool flag = true;
            while (low <= high)
            {
                int average = (low + high) / 2;
                if (w > rar[average] && w >= rar[average + 1])
                {
                    low = average + 1;
                }
                else if (w < rar[average] && w < rar[average + 1])
                {
                    high = average - 1;
                }
                else if (w >= rar[average] && w <= rar[average + 1])
                {
                    cout << rrr[average] << " ";
                    flag = false;
                    break;
                }
            }
            if (flag)
            {
                cout << 0 << " ";
            }
        }
        cout << endl;
    }
}
Вот такой вот код у меня получился но я получаю time limit. Почему так, я псчитал что где то 2 * 10^8 получается
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2022, 19:19
Ответы с готовыми решениями:

Определить максимально возможную сумму, которую можно собрать по всему маршруту
Дана прямоугольная доска размером n×m (n строк и m столбцов). В левом верхнем углу этой доски находится шахматный король, которого...

Определить высоту, на которую может подняться по лестнице человек
1. Лестница длиной 4м приставлена к гладкой стене под углом 60(градусов) к полу, максимальная сила трения между лестницей и поло 200Н. На...

Определить высоту, на которую может подняться шар, запущенный вверх по наклонной плоскости
2) Определить высоту, на которую может подняться шар, запущенный со скоростью v0 = 4 м/c вверх по наклонной плоскости. Трением пренебречь....

3
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
17.10.2022, 23:23
Лучший ответ Сообщение было отмечено SSSSSSSSSS111 как решение

Решение

Цитата Сообщение от SSSSSSSSSS111 Посмотреть сообщение
псчитал что где то 2 * 10^8 получается
ЧаВО? ну точнее что вы посчитали, где это произошло, под какими бутиратами и т.д. и т.п. (если я покажусь вам грубым - поверьте, я не со зла)

почему бы не перевести куски кода в функции - это повысит читабельность.
что за волшебные 10000? (если 10^5 = 100000).

почему бы не воспользоваться рандомными числами, а то ведь задолбитесь вводить ручками
1
0 / 0 / 0
Регистрация: 05.10.2022
Сообщений: 3
18.10.2022, 05:56  [ТС]
Да нет, не грубо. Я сейчас утром смотрю что я написал и сам в афигеваю. Как только будет возможность я перепишу во что то читаемое и кажется я с 10000 просто ошибся нулем. Нужно было просто создать константу и проблем не знать.
0
0 / 0 / 0
Регистрация: 05.10.2022
Сообщений: 3
18.10.2022, 14:55  [ТС]
Спасибо что поправил где я написал 10^4. Я его отправил и получил ошибку исполнения на следующем тесте. Решил переделать код: добавил константу и вынес функцию бинпоиска. Все каким то чудом заработало. Но я так и не понял что не так с моим количеством операций. У меня есть 100 тестов(в одном тесте) и 10^5 запросов, на каждый запрос я пробеаюсь бинпоиском и получается в сумме 100 * 10^5 * log n(20) => 2 * 10^8
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.10.2022, 14:55
Помогаю со студенческими работами здесь

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

Определите по количеству кубиков N максимально возможную высоту пирамиды в кубиках
Условие: Плоской пирамидой называют набор кубиков, в котором каждый более верхний слой содержит на один кубик меньше, чем предыдущий....

Выбирая 4 числа из 5, посчитать максимально возможную и минимально возможную сумы
Даны 5 целых чисел. Посчитайте минимально возможную и максимально возможные суммы выбрав ровно 4 числа из заданных изначально.

Как можно поддерживать высоту одинаковой для каждого из блоков?
Доброго времени суток! В коде ниже три блока, как три колонки: левый, центральный (основной, более широкий), правый. Можно ли прописать...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru