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

Upper bound

21.06.2021, 21:37. Показов 9107. Ответов 17
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Upper bound
На вход подаются N целых чисел, а также набор из M запросов, каждый из которых — целое число. Ваша задача — для каждого запроса найти количество чисел из исходного набора, меньших либо равных заданному в запросе числу. Использовать встроенные функции бинарного поиска запрещено.

Входные данные

Первая строка содержит число N — количество элементов в массиве. 1≤N≤250000.
Вторая строка содержит N целых чисел Ai через пробел. −109≤Ai≤109.
Третья строка содержит число M — количество запросов. 1≤M≤250000.
Четвёртая строка содержит M целых чисел Qi через пробел. −109≤Qi≤109.

Выходные данные

Выведите единственную строку с M целыми числами — количествами чисел исходного массива, меньших либо равных соответствующему запросу.

Умоляю ХЭЭЛП
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.06.2021, 21:37
Ответы с готовыми решениями:

lower/upper bound
добрый день. имеется массив a, число x. найти такое i, что |ai - x| минимально, ну т.е. a = {-10, -4, 8, 10}, x = 5 -> i = 1 бин...

функция first upper(
на с помощья функции first upper (превращает строку К так что бы каждое слово начиналось с большой буквы) составить программу! самую...

Ошибка 'No columns were bound prior to calling SQLFetchScroll/SQLExtendedFetch'
Фигня якась...:( ... CDatabase db; CRecordset records; try { db.Open( 'dBASE Files' ); ...

17
2 / 2 / 0
Регистрация: 03.05.2020
Сообщений: 202
22.07.2021, 13:18
Тема актуальна!!!
0
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
30.07.2021, 09:03
Цитата Сообщение от dmitrii2000 Посмотреть сообщение
Тема актуальна!!!
а решение хоть есть?
0
2 / 2 / 0
Регистрация: 03.05.2020
Сообщений: 202
30.07.2021, 09:11
меняю на пещеру с монстрами решение
0
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
30.07.2021, 12:28
а остальное есть?
кроме аппер баунд и пещеры с монстрами?

вот то на чём я остановился на пещере с монстрами:
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 <vector>
#include <algorithm>
using namespace std;
const int N = 22e4;
 
int a[N], t[N];
int cal(int n) {
    int ans = 1;
    for (int i = 0, l = -1, mx = 0; i < n; i++) {
        mx = max(mx, a[i]);
        if (t[i - l] < mx)l = i - 1, ans++, mx = a[i];
        if (t[1] < a[i])return -1;
    }
    return ans;
}
int main() {
    ios::sync_with_stdio(0);
    int T=1, n, m;
    
    while (T--) {
        cin >> n;
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            t[i + 1] = 0;
        }
        cin >> m;
        for (int i = 0, x, y; i < m; i++) {
            cin >> x >> y;
            t[y] = max(t[y], x);
        }
        for (int i = n - 1; i > 0; i--) {
            t[i] = max(t[i], t[i + 1]);
        }
        cout << cal(n) << '\n';
    }
    return 0;
}
выдаёт неверный ответ!

Добавлено через 5 минут
Цитата Сообщение от dmitrii2000 Посмотреть сообщение
меняю на пещеру с монстрами решение
а где решение нашли?
0
2 / 2 / 0
Регистрация: 03.05.2020
Сообщений: 202
30.07.2021, 13:26
В голове

Добавлено через 1 минуту
Остальное есть
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
30.07.2021, 14:41
Цитата Сообщение от alimaaa Посмотреть сообщение
Использовать встроенные функции бинарного поиска запрещено.
пишем свою:
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 <vector>
 
namespace my
{
    template<class ForwardIt, class T>
    ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value)
    {   ForwardIt it;
        typename std::iterator_traits<ForwardIt>::difference_type count, step;
        count = std::distance(first, last);
 
        while (count > 0)
        {   it = first;
            step = count / 2;
            std::advance(it, step);
            if (!(value < *it))
            {   first = ++it;
                count -= step + 1;
            }
            else
                count = step;
        }
        return first;
    }
};
 
int main()
{   ///-----------------------------------------------|
    /// Для работы с upper_bound                      |
    /// data должно быть остортированно!              |
    ///-----------------------------------------------:
    const std::vector<int> data = { 1, 2, 4, 5, 5, 6 };
    for (int i = 0; i < 7; ++i)
    {   auto upper = my::upper_bound(data.begin(), data.end(), i);
 
        std::cout << i << ": " << upper - data.begin() << '\n';
    }
}
0
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
30.07.2021, 16:14
Цитата Сообщение от XLAT Посмотреть сообщение
пишем свою:
ни хочу показаться наглым, но похоже тот чел забыл написать ввод и вывод, я скажу:
ввод
5
1 5 3 2 1
2
4 3

вывод
4 4

там 2 массива нам надо по очереди брать по одному элементу из массива номер 2, и проверять, сколько элементов меньше либо равно ему есть в массиве номер 1, например там 4 и 3, нам надо понять сколько элементов там меньше либо равно 4, тоже самое и с тройкой, таких элементов для 4 - 1, 3, 2, 1. То есть 4, для тройки тоже самое 3 - 1, 3, 2, 2!

Добавлено через 3 минуты
Цитата Сообщение от dmitrii2000 Посмотреть сообщение
Остальное есть
у меня нет полного решения задачи "Пещера с монстрами", можно попросить скинуть 2-ую 5-ую и 6-ую задачу из первого блока и задачи под номером 2, 4 и 6? Прошу мне срочно!!!
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
30.07.2021, 16:27
Цитата Сообщение от irthgr Посмотреть сообщение
забыл
я не забыл,
там фокус на upper_bound, то что она есть и она работает(!)
а как вы её у себя собирается использовать это уже дело десятое ....

Добавлено через 1 минуту
Цитата Сообщение от irthgr Посмотреть сообщение
1 5 3 2 1
на этот случай там в рамке я специально написал:
C++
1
2
3
4
{   ///-----------------------------------------------|
    /// Для работы с upper_bound                      |
    /// data должно быть отсортировано!               |
    ///-----------------------------------------------:
сначала отсортируй, а потом баунти...
0
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
30.07.2021, 16:58
Цитата Сообщение от XLAT Посмотреть сообщение
я не забыл
я не про тебя, я про того кто этот вопрос создал )

Добавлено через 45 секунд
Цитата Сообщение от XLAT Посмотреть сообщение
сначала отсортируй
как например?
по возрастанию?

Добавлено через 19 минут
у меня выaдёт таkую ошибку:
Code
1
no match for 'operator>>'
что это значит?
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
30.07.2021, 17:00
Цитата Сообщение от irthgr Посмотреть сообщение
как например?
по возрастанию?
полное решение, но проверить выходной формат на валидатор(столбик или строчка или ещё что - в первопосте про это туман)

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
#include <iostream>
#include <vector>
#include <algorithm>
 
namespace my
{
    template<class ForwardIt, class T>
    ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value)
    {   ForwardIt it;
        typename std::iterator_traits<ForwardIt>::difference_type count, step;
        count = std::distance(first, last);
 
        while (count > 0)
        {   it = first;
            step = count / 2;
            std::advance(it, step);
            if (!(value < *it))
            {   first = ++it;
                count -= step + 1;
            }
            else
                count = step;
        }
        return first;
    }
};
 
int main()
{
    int n; std::cin >> n;
    std::vector<int> data(n);
    for(auto& e : data) std::cin >> e;
 
    std::sort(data.begin(), data.end());
 
    std::cin >> n;
 
    for (int i = 0, nn = n-1; i < n; ++i)
    {   int a; std::cin >> a;
        auto upper = my::upper_bound(data.begin(), data.end(), a);
 
        std::cout << upper - data.begin();
        if(i != nn) std::cout << ' '; /// вывод в строчку и проверка чтобы не печатался последний пробел в строке.
    }
}
1
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
30.07.2021, 17:03
Цитата Сообщение от XLAT Посмотреть сообщение
полное решение
вот что говорит тест:
Программа не соответствует требованиям:
в коде программы используется функция upper_bound, что запрещено условиями задачи
0
Just Do It!
 Аватар для XLAT
4206 / 2663 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
30.07.2021, 17:12
Цитата Сообщение от irthgr Посмотреть сообщение
в коде программы используется функция upper_bound, что запрещено условиями задачи
ок переименовывать не будем, это слишком тяжело, а ваще выкинем функцию:
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
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{   int n;
    std::cin >> n;
    std::vector<int> data(n);
    for(auto& e : data) std::cin >> e;
 
    std::sort(data.begin(), data.end());
 
    std::cin >> n;
 
    for (int i = 0, nn = n-1; i < n; ++i)
    {   int value;
        std::cin >> value;
 
        auto first(data.begin());
        {   auto it   (data.begin());
            auto last (data.end  ());
 
            typename std::iterator_traits<std::vector<int>::iterator>::
                                                    difference_type count, step;
            count = std::distance(first, last);
 
            while (count > 0)
            {   it = first;
                step = count / 2;
                std::advance(it, step);
                if (!(value < *it))
                {   first = ++it;
                    count -= step + 1;
                }
                else
                    count = step;
            }
        }
 
        std::cout << first - data.begin();
        if(i != nn) std::cout << ' ';
    }
}
и?
2
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
30.07.2021, 18:06
Цитата Сообщение от XLAT Посмотреть сообщение
и?
брат

Добавлено через 40 секунд
ты просто красавчик!!
спасибо огромное!! 100 из 100!

Добавлено через 17 минут
XLAT,
а возможно переделать это на с++?
Коровы в стойла
0
 Аватар для Tim977
40 / 12 / 0
Регистрация: 05.08.2022
Сообщений: 12
17.08.2022, 15:38
Спасибо, огромное, брат, я сам очень долго долбился...
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,219
17.08.2022, 19:45
Зачем было весь этот огород городить, если можно просто сделать массив счетчиков

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
#include <iostream>
 
int main() 
{
  const unsigned MIN = -109, MAX = 109, TOTAL = MAX - MIN + 1;
  unsigned counts[TOTAL] = { 0 };
   
  unsigned n = 0;
  std::cin >> n;
   
  for (; n > 0; --n)
  {
    int v = 0;
    std::cin >> v;
    ++counts[v - MIN];
  }
 
  for (unsigned i = 1; i < TOTAL; ++i)
    counts[i] += counts[i - 1];
 
  unsigned m = 0;
  std::cin >> m;
 
  for (; m > 0; --m)
  {
    int v = 0;
    std::cin >> v;
    std::cout << counts[v - MIN] << " ";
  }
 
  std::cout << std::endl;
}
0
17.08.2022, 20:01

Не по теме:

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Зачем было весь этот огород городить, если можно просто сделать массив счетчиков
Это если 109 действительно 109, а не как обычно :)

0
10 / 10 / 0
Регистрация: 05.04.2023
Сообщений: 47
09.08.2024, 23:43
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
#include <iostream>
#include <vector>
#include <algorithm>
 
int main() {
    int n;
    std::cin >> n;
    std::vector<int> a(n);
    for (int i = 0; i < n; ++i) {
        std::cin >> a[i];
    }
    std::sort(a.begin(), a.end());
    
    int M;
    std::cin >> M;
    std::vector<int> b(M);
    for (int i = 0; i < M; ++i) {
        std::cin >> b[i];
    }
    
    std::vector<int> answers;
    for (int x : b) {
        int L = -1;
        int R = n;
        while (R - L > 1) {
            int mid = (R + L) / 2;
            if (a[mid] > x) {
                R = mid;
            } else {
                L = mid;
            }
        }
        answers.push_back(R);
    }
    
    for (int answer : answers) {
        std::cout << answer << " ";
    }
    std::cout << std::endl;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2024, 23:43
Помогаю со студенческими работами здесь

sql запрос upper
как написать запрос upper?

Upper bound
Upper bound На вход подаются N целых чисел, а также набор из M запросов, каждый из которых — целое число. Ваша задача для каждого запроса...

Найти количество чисел из исходного набора, меньших либо равных заданному в числу
На вход подаются N целых чисел, а также набор из M запросов, каждый из которых — целое число. Ваша задача — для каждого запроса найти...

Upper в List
Почему не работает? example=' Життя іде і все без коректур. І час летить, не стишує галопу. Давно нема маркізи Помпадур, і ми живем...

textbox to upper
подскажите простой и красивый способ, позволяющий все вводимые буквы приводить к верхнему регистру во время ввода. может есть настройка...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru