Форум программистов, компьютерный форум CyberForum.ru

Левый и правый двоичный поиск - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание и использование собственных библиотек http://www.cyberforum.ru/cpp-beginners/thread914452.html
Создал я библиотеку с таким вот простым кодом (компилятор mingw):int foo() { return 100; }Получился у меня файл libcppstaticlibrary_1.a, закинул я его в папку с новым проектом. Хотел так использовать:#include <iostream> #include "libcppstaticlibrary_1.a"; int main() { std::cout<<foo(); return 0;
C++ Взять последовательность чисел из файла - определить, является ли она геометрической прогрессией взять последовательность чисел из файла. Определить, является ли он геометрической прогрессией http://www.cyberforum.ru/cpp-beginners/thread914446.html
C++ расчет погрешности
Код программы, считающей погрешность при переводе десятичной дроби в двоичную Не могу понять зачем нужна и как работает эта строка: b = b | 040000000; // Добавление 1 перед мантиссой Еще, при вводе числа например 11111111 (8 единиц) или любых других цифр в количестве 8, программа выдает дикую ахинею, препод просит объяснить почему так. я подозреваю, что дело в переполнении разрядной сетки,...
C++ Учет погрешности при переводе числа из десятичной системы счисления в двоичную, а потом обратно
Смысл задания в том, что нужно вводимое пользователем число перевести из десятичной системы счисления в двоичную, затем полученное число обратно в десятичную. Образуется погрешность при обратном переводе. Это число и является результатом работы. Суть проблемы в том, что число вводимое пользователем ограниченно вводом максимально возможного 7-значного числа. Если ввести больше, программа...
C++ Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) http://www.cyberforum.ru/cpp-beginners/thread914403.html
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; Вот собственно вопрос: Как можно присваивать(инициализировать) значения полям структуры, кроме такой записи:
C++ MSVC и template template classes Приветствую. Как в MSVC передать template template класс? Простой пример template<template<typename, typename> class Return> struct if_ { }; template<typename Next, typename Last> struct object_ подробнее

Показать сообщение отдельно
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
29.06.2013, 10:51     Левый и правый двоичный поиск
Помогите, пожалуйста, не проходит 1 тест, не понимаю из-за чего

Дано два списка чисел, числа в первом списке упорядочены по неубыванию. Для каждого числа из второго списка определите номер первого и последнего появления этого числа в первом списке.

Формат входных данных
В первой строке входных данных записано два числа N и M (1NM20000). Во второй строке записано N упорядоченных по неубыванию целых чисел — элементы первого списка. В третьей строке записаны M целых неотрицательных чисел - элементы второго списка. Все числа в списках - целые 32-битные знаковые.

Программа должна вывести M строчек. Для каждого числа из второго списка нужно вывести номер его первого и последнего вхождения в первый список. Нумерация начинается с единицы. Если число не входит в первый список, нужно вывести одно число 0.

Примеры
входные данные10 5
1 1 3 3 5 7 9 18 18 57
57 3 9 1 179
выходные данные
10 10
3 4
7 7
1 2
0

Вот моё решение:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    long n, k, m;
    cin >> n >> k;
    long *a = new long[n];
    long *b = new long[k];  
 
    for (long i = 0; i < n; i++)
        cin >> a[i];
 
    for (long i = 0; i < k; i++)
        cin >> b[i];
 
    for (long i = 0; i < k; i++)
    {
        int l = 0, r = n - 1;
        while (l < r)
        {
            m = (l + r) / 2;
            if (a[m] < b[i]) l = m + 1;
            else r = m;
        }
        if (a[r] == b[i])
        {
            cout << ++r << " ";
            while (a[r] == b[i])
                r++;
            cout << r << endl;
        }
        else cout << 0 << endl;
    }
 
    delete [] a;
    delete [] b;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru