Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880

Подсчитать единичные отрезки

16.01.2016, 19:43. Показов 7064. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На числовой прямой окрасили N отрезков. Известны координаты левого и правого концов каждого отрезка (Li и Ri). Найти сумму длин частей числовой прямой, окрашенных ровно в один слой.

Sample Input:
3
1 4
7 8
2 5
Sample Output:
3

Добавлено через 14 часов 7 минут
Ап, нужна помощь

Добавлено через 4 часа 17 минут
Ап, все еще актуально.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2016, 19:43
Ответы с готовыми решениями:

Подсчитать единичные разряды 8-битного двоичного числа (КР580)
Сижу и не понимаю как это реализовать. org 100h ;Установка начального адреса программы mvi A,01000101b ;Запись в аккумулятор исходного...

Единичные биты,просьба помочь
Всем привет :) просьба помочь нам с пониманием вот такого вот задания: "Напишите процедуру вычисления числа единичных бит 16-...

Единичные вектора в сферической системе координат
Добрый день, реализирую в матлабе диаграмму направленности антенны. Столкнулся с проблемой в реализации сферической системы координат,...

16
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
16.01.2016, 21:03
Не могу понять условие можно поподробнее и если можно пример?
0
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
16.01.2016, 23:27  [ТС]
Цитата Сообщение от Dastan4ik Посмотреть сообщение
Не могу понять условие можно поподробнее и если можно пример?
Так пример я уже написал.
Цитата Сообщение от andreyananas Посмотреть сообщение
Sample Input:
3
1 4
7 8
2 5
Sample Output:
3
0
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
16.01.2016, 23:35  [ТС]
Вот числовая прямая. Три отрезка с координатами. Вопрос:
Цитата Сообщение от andreyananas Посмотреть сообщение
Найти сумму длин частей числовой прямой, окрашенных ровно в один слой
Ответ: 3. (На рисунку указал их)
Миниатюры
Подсчитать единичные отрезки  
0
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
17.01.2016, 01:52  [ТС]
Неужели ни у кого нету никаких идей?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.01.2016, 02:03
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Цитата Сообщение от andreyananas Посмотреть сообщение
Неужели ни у кого нету никаких идей?
Их есть у меня!
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//На числовой прямой окрасили N отрезков. Известны координаты левого и правого
//концов каждого отрезка (Li и Ri). Найти сумму длин частей числовой прямой,
//окрашенных ровно в один слой.
 
//Sample Input:
//3
//1 4
//7 8
//2 5
//Sample Output:
//3
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <ctime>
#include <iostream>
#include <iterator>
#include <random>
#include <set>
///////////////////////////////////////////////////////////////////////////////
typedef std::set        < int       >   T_numbers;
typedef T_numbers                       T_segment;
typedef std::multiset   < T_segment >   T_segments;
///////////////////////////////////////////////////////////////////////////////
int     get_single_layer_length
    (
        T_numbers   const   &   numbers,
        T_segments  const   &   segments
    )
{
    int         res     {};
    int         L       {};
 
    T_segments  cur_segments;
 
    for (
            auto    R
            :
            numbers
        )
    {
        if  (
                R     !=  *numbers.begin()
            )
        {
            std::copy_if
                (
                    segments.begin  (),
                    segments.end    (),
 
                    std::inserter   (
                                        cur_segments,
                                        cur_segments.begin()
                                    ),
 
                    [=]             ( auto  const   &   segment )
                    {
                        return      *segment.begin()    ==  L;
                    }
                );
 
            T_segments  new_cur_segments;
 
            std::remove_copy_if
                (
                    cur_segments.begin  (),
                    cur_segments.end    (),
 
                    std::inserter       (
                                            new_cur_segments,
                                            new_cur_segments.begin()
                                        ),
 
                    [=]                 ( auto  const   &   cur_segment )
                    {
                        return  *cur_segment.rbegin()   ==  L;
                    }
                );
 
            std::swap
                (
                    new_cur_segments,
                    cur_segments
                );
 
            res     +=  cur_segments.size()     ==  1
                            ?   R     -   L
                            :   0;
        }//if
 
        L    =   R;
    }//for
 
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::default_random_engine  gen( unsigned(time(0)) );
 
    for(;;)
    {
        std::uniform_int_distribution< int >    distr_0_5( 0,  5 );
        int     n   =   distr_0_5( gen );
 
        std::cout   <<  std::endl
                    <<  n
                    <<  " segments:"
                    <<  std::endl;
 
        T_numbers   numbers;
        T_segments  segments;
 
        for( int  i = 0; i < n; ++i )
        {
            int         L   =   distr_0_5( gen );
            int         R   =   distr_0_5( gen );
            T_segment   segment;
 
            numbers.insert( L );
            numbers.insert( R );
 
            segment.insert( L );
            segment.insert( R );
 
            std::cout   <<  "#"
                        <<  i + 1
                        <<  ":\t"
                        <<  "["
                        <<  *segment.begin()
                        <<  ","
                        <<  *segment.rbegin()
                        <<  "]"
                        <<  std::endl;
 
            segments.insert( segment );
        }//for
 
        std::cout   <<  get_single_layer_length
                            (
                                numbers,
                                segments
                            )
 
                    <<  std::endl;
 
        system("pause");
    }//for
}
1
24 / 24 / 7
Регистрация: 25.04.2013
Сообщений: 195
17.01.2016, 04:19
Цитата Сообщение от Mr.X Посмотреть сообщение
Их есть у меня!
А если ругается
....
30 E:\1\temp\2.cpp a function-definition is not allowed here before '{' token
102 E:\1\temp\2.cpp `uniform_int_distribution' is not a member of `std'
102 E:\1\temp\2.cpp expected primary-expression before "int"
...
и еще много такого, это компилятор старый ?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.01.2016, 06:34
Цитата Сообщение от kuza84 Посмотреть сообщение
это компилятор старый ?
Он, родимый!
0
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
17.01.2016, 15:50  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Их есть у меня!
Не мг бы ты прокомментировать этот код?
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// UnitSegments.cpp : Defines the entry point for the console application.
//На числовой прямой окрасили N отрезков. Известны координаты левого и правого
//концов каждого отрезка (Li и Ri). Найти сумму длин частей числовой прямой,
//окрашенных ровно в один слой.
//Sample Input:
//3
//1 4
//7 8
//2 5
//Sample Output:
//3
///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <algorithm>
#include <ctime>
#include <iostream>
#include <iterator>
#include <random>
#include <set>
///////////////////////////////////////////////////////////////////////////////
typedef std::set        < int       >   T_numbers;
typedef T_numbers                       T_segment;
typedef std::multiset   < T_segment >   T_segments;
///////////////////////////////////////////////////////////////////////////////
int     get_single_layer_length(T_numbers const & numbers, T_segments const & segments)
{
    int res{};
    int L{};
    T_segments  cur_segments;
        for (auto R : numbers)
        {
        if (R != *numbers.begin())
        {
            std::copy_if(segments.begin(), segments.end(), std::inserter(cur_segments, cur_segments.begin()), [=](auto  const   &   segment)
            {
                return      *segment.begin() == L;
            });
            
            T_segments  new_cur_segments;
            std::remove_copy_if(cur_segments.begin(), cur_segments.end(), std::inserter(new_cur_segments, new_cur_segments.begin()), [=](auto  const   &   cur_segment)
            {
                return  *cur_segment.rbegin() == L;
            });
 
            std::swap(new_cur_segments, cur_segments);
            res += cur_segments.size() == 1 ? R - L : 0;
        }//if
        L = R;
    }//for
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::default_random_engine  gen(unsigned(time(0)));
 
    for (;;)
    {
        std::uniform_int_distribution< int >    distr_0_5(0, 5);
        int     n = distr_0_5(gen);
 
        std::cout << std::endl << n << " segments:" << std::endl;
 
        T_numbers   numbers;
        T_segments  segments;
 
        for (int i = 0; i < n; ++i)
        {
            int         L = distr_0_5(gen);
            int         R = distr_0_5(gen);
            T_segment   segment;
 
            numbers.insert(L);
            numbers.insert(R);
 
            segment.insert(L);
            segment.insert(R);
 
            std::cout << "#" << i + 1 << ":\t" << "[" << *segment.begin() << "," << *segment.rbegin() << "]" << std::endl;
            segments.insert(segment);
        }//for
        std::cout << get_single_layer_length(numbers, segments) << std::endl;
        system("pause");
    }//for
 
 
    return 0;
}
Добавлено через 47 секунд
Цитата Сообщение от kuza84 Посмотреть сообщение
и еще много такого, это компилятор старый ?
Нужен С++11

Добавлено через 9 минут
Цитата Сообщение от andreyananas Посмотреть сообщение
Не мг бы ты прокомментировать этот код?
Или хотя бы подробно опиши по пунктам, что за чем происходит.

Добавлено через 11 минут
Вообщем в комментариях нуждается вот эта функция:
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
typedef std::set        < int       >   T_numbers;
typedef T_numbers                       T_segment;
typedef std::multiset   < T_segment >   T_segments;
///////////////////////////////////////////////////////////////////////////////
int     get_single_layer_length(T_numbers const & numbers, T_segments const & segments)
{
    int res{};
    int L{};
    T_segments  cur_segments;
        for (auto R : numbers)
        {
        if (R != *numbers.begin())
        {
            std::copy_if(segments.begin(), segments.end(), std::inserter(cur_segments, cur_segments.begin()), [=](auto  const   &   segment)
            {
                return      *segment.begin() == L;
            });
            
            T_segments  new_cur_segments;
            std::remove_copy_if(cur_segments.begin(), cur_segments.end(), std::inserter(new_cur_segments, new_cur_segments.begin()), [=](auto  const   &   cur_segment)
            {
                return  *cur_segment.rbegin() == L;
            });
 
            std::swap(new_cur_segments, cur_segments);
            res += cur_segments.size() == 1 ? R - L : 0;
        }//if
        L = R;
    }//for
    return  res;
}
Добавлено через 7 минут
C++
1
2
typedef std::set        < int       >   T_numbers;
typedef T_numbers                       T_segment;
Вот в чем разница между этими двумя типами?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.01.2016, 18:31
Цитата Сообщение от andreyananas Посмотреть сообщение
C++
1
2
typedef std::set < int > T_numbers;
typedef T_numbers T_segment;
Вот в чем разница между этими двумя типами?
Ну, в переменную типа T_numbers я сложил все точки начал и концов отрезков, а в переменные типа T_segment складывал только начало и конец для каждого отрезка.
Цитата Сообщение от andreyananas Посмотреть сообщение
что за чем происходит
Пробегаемся по точкам из переменной типа T_numbers. В каждой точке в переменную cur_segments добавляем все отрезки, которые в ней начинаются и удаляем из нее все отрезки, которые в ней заканчиваются. Если в ней остается ровно один отрезок - добавляем к результату расстояние от этой точки до следующей.
1
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
17.01.2016, 18:52  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, в переменную типа T_numbers я сложил все точки начал и концов отрезков, а в переменные типа T_segment складывал только начало и конец для каждого отрезка.
Я это понял. Но зачем именно так? Почему нельзя было создать две переменные типа T_numbers и в одну складывать
Цитата Сообщение от Mr.X Посмотреть сообщение
все точки начал и концов отрезков
, а во вторую
Цитата Сообщение от Mr.X Посмотреть сообщение
складывал только начало и конец для каждого отрезка
Зачем было создавать два ТИПА ведь они же одинаковые? Или я туплю?
Разве T_numbers чем то отличается от T_segment ?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.01.2016, 19:11
Цитата Сообщение от andreyananas Посмотреть сообщение
Зачем было создавать два ТИПА ведь они же одинаковые? Или я туплю?
Разве T_numbers чем то отличается от T_segment ?
Вообще-то специалисты советуют именовать типы в контексте решаемой задачи.
У этих типов назначение разное.
Код должен быть самодокументируемым.
Ну и это в данной версии программы реализация этих двух типов совпадает. А может быть в следующей версии мы захотим хранить отрезки в парах чисел или в комплексных числах?
1
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
17.01.2016, 20:48  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Вообще-то специалисты советуют именовать типы в контексте решаемой задачи.
У этих типов назначение разное.
Код должен быть самодокументируемым.
Понял. Ну я просто думал что я недопонимаю и типы на самом деле разные=)

Добавлено через 1 час 30 минут
Цитата Сообщение от Mr.X Посмотреть сообщение
Код должен быть самодокументируемым.
Вообщем проблема вот в чем. Я по прежнему недопонимаю как работают лямбда-функции. Не могли бы вы заменить их более классическими методами?
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
///////////////////////////////////////////////////////////////////////////////
int     get_single_layer_length(T_numbers const & numbers, T_segments const & segments)
{
    int res{};
    int L{};
    T_segments  cur_segments;
        for (auto R : numbers)
        {
        if (R != *numbers.begin())
        {
            std::copy_if(segments.begin(), segments.end(), std::inserter(cur_segments, cur_segments.begin()), [=](auto  const   &   segment)
            {
                return      *segment.begin() == L;
            });
            
            T_segments  new_cur_segments;
            std::remove_copy_if(cur_segments.begin(), cur_segments.end(), std::inserter(new_cur_segments, new_cur_segments.begin()), [=](auto  const   &   cur_segment)
            {
                return  *cur_segment.rbegin() == L;
            });
 
            std::swap(new_cur_segments, cur_segments);
            res += cur_segments.size() == 1 ? R - L : 0;
        }//if
        L = R;
    }//for
    return  res;
}
Вот этот кусок:
C++
1
2
3
4
            std::copy_if(segments.begin(), segments.end(), std::inserter(cur_segments, cur_segments.begin()), [=](auto  const   &   segment)
            {
                return      *segment.begin() == L;
            });
И этот:
C++
1
2
3
4
            std::remove_copy_if(cur_segments.begin(), cur_segments.end(), std::inserter(new_cur_segments, new_cur_segments.begin()), [=](auto  const   &   cur_segment)
            {
                return  *cur_segment.rbegin() == L;
            });
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.01.2016, 21:43
Цитата Сообщение от andreyananas Посмотреть сообщение
Я по прежнему недопонимаю как работают лямбда-функции. Не могли бы вы заменить их более классическими методами?
Ну, это вам к Страуструпу надо обращаться! Это он их выдумал!
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
18.01.2016, 18:15
andreyananas, у Праты они отлично описаны (18 глава, страница 1077). Проще один раз прочитать, написать самому несколько примеров с лямбдами и не париться, когда видите их в коде. Каждая непонятная конструкция в коде - это вызов. Хороший программист не тот, кто как ходячая энциклопедия знает всё. Хорош тот, кто не боится принять вызов. Кто не боится оставить зону комфорта и ринуться в бездну неизвестного. Что там, за холмом?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
18.01.2016, 21:13
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Малость погорячился я в предыдущем варианте! Можно проще:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//На числовой прямой окрасили N отрезков. Известны координаты левого и правого
//концов каждого отрезка (Li и Ri). Найти сумму длин частей числовой прямой,
//окрашенных ровно в один слой.
 
//Sample Input:
//3
//1 4
//7 8
//2 5
//Sample Output:
//3
///////////////////////////////////////////////////////////////////////////////
#include <ctime>
#include <iostream>
#include <random>
#include <set>
///////////////////////////////////////////////////////////////////////////////
typedef std::set        < int   >   T_points;
typedef T_points                    T_segment;
typedef std::multiset   < int   >   T_endpoints;
///////////////////////////////////////////////////////////////////////////////
int     get_single_layer_length_1
    (
        T_endpoints     const   &   lefts,
        T_endpoints     const   &   rights,
        T_points        const   &   points
    )
{
    int         res                 {};
    int         L                   {};
    int         cur_seg_counter     {};
 
    for (
            auto    R
            :
            points
        )
    {
        if  (
                R     !=  *points.begin()
            )
        {
            cur_seg_counter     +=  lefts   .count( L );
            cur_seg_counter     -=  rights  .count( L );
 
            res     +=  cur_seg_counter     ==  1
                            ?   R     -   L
                            :   0;
        }//if
 
        L    =   R;
    }//for
 
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::default_random_engine  gen( unsigned(time(0)) );
 
    for(;;)
    {
        std::uniform_int_distribution< int >    distr_0_5( 0,  5 );
        int                                     n   =   distr_0_5( gen );
 
        std::cout   <<  std::endl
                    <<  n
                    <<  " segments:"
                    <<  std::endl;
 
        T_endpoints     lefts;
        T_endpoints     rights;
        T_points        points;
 
        for( int  i = 0; i < n; ++i )
        {
            int         L   =   distr_0_5( gen );
            int         R   =   distr_0_5( gen );
 
            if( L > R )
            {
                std::swap( L,   R );
            }
 
            T_segment   segment{ L,     R };
 
            lefts   .insert( L );
            rights  .insert( R );
 
            points.insert( L );
            points.insert( R );
 
            std::cout   <<  "#"
                        <<  i + 1
                        <<  ":\t"
                        <<  "["
                        <<  *segment.begin()
                        <<  ","
                        <<  *segment.rbegin()
                        <<  "]"
                        <<  std::endl;
        }//for
 
        std::cout   <<  get_single_layer_length_1
                            (
                                lefts,
                                rights,
                                points
                            )
 
                    <<  std::endl;
 
        system("pause");
    }//for
}
2
 Аватар для andreyananas
27 / 27 / 11
Регистрация: 15.10.2013
Сообщений: 880
19.01.2016, 03:55  [ТС]
Цитата Сообщение от gru74ik Посмотреть сообщение
у Праты они отлично описаны (18 глава, страница 1077). Проще один раз прочитать, написать самому несколько примеров с лямбдами и не париться, когда видите их в коде. Каждая непонятная конструкция в коде - это вызов. Хороший программист не тот, кто как ходячая энциклопедия знает всё. Хорош тот, кто не боится принять вызов. Кто не боится оставить зону комфорта и ринуться в бездну неизвестного. Что там, за холмом?

Не по теме:

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



Добавлено через 1 час 37 минут
Цитата Сообщение от Mr.X Посмотреть сообщение
Малость погорячился я в предыдущем варианте! Можно проще:
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
// UnitSegments.cpp : Defines the entry point for the console application.
//На числовой прямой окрасили N отрезков. Известны координаты левого и правого
//концов каждого отрезка (Li и Ri). Найти сумму длин частей числовой прямой,
//окрашенных ровно в один слой.
//Sample Input:
//3
//1 4
//7 8
//2 5
//Sample Output:
//3
///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <ctime>
#include <iostream>
#include <random>
#include <set>
///////////////////////////////////////////////////////////////////////////////
typedef std::set        < int   >   T_points;
typedef T_points                    T_segment;
typedef std::multiset   < int   >   T_endpoints;
///////////////////////////////////////////////////////////////////////////////
int     get_single_layer_length_1(T_endpoints const & lefts, T_endpoints const & rights, T_points const & points)
{
    int res{};
    int L{};
    int cur_seg_counter{};
 
    for (auto R : points)
    {
        if (R != *points.begin())
        {
            cur_seg_counter += lefts.count(L);
            cur_seg_counter -= rights.count(L);
 
            res += cur_seg_counter == 1
                ? R - L
                : 0;
        }//if
        L = R;
    }//for
    return  res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    int nSize;
    std::cin >> nSize;
    
    T_endpoints     lefts;
    T_endpoints     rights;
    T_points        points;
 
    for (int i(0); i < nSize; i++)
    {
        int L, R;
        std::cin >> L;
        std::cin >> R;
        lefts.insert(L);
        rights.insert(R);
        points.insert(L);
        points.insert(R);
    }
    std::cout << get_single_layer_length_1(lefts, rights, points) << std::endl;
 
    return 0;
}
Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2016, 03:55
Помогаю со студенческими работами здесь

Удалить из массива все единичные элементы
Дан массив С, состоящий из n целых положительных элементов. Удалить из массива все единичные элементы.

В каждом байте перенести все единичные биты в середину
Помогите написать программу(С++)В каждом байте перенести все единичные биты в середину.

В каждом байте числа переместить единичные биты в конец
Помогите, пожалуйста, с решением. Ну очень надо! В КАЖДОМ БАЙТЕ числа переместить единичные биты в конец. Моя программа просто перемещает...

Выяснить, есть ли на главной диагонали матрицы единичные элементы
Ввести натуральное число n. Выяснить, есть ли на главной диагонали матрицы A (n x n) единичные элементы, если A (i, j) = i x cos...

В матрице положительные элементы заменить на единичные , а отрицательные обнулить
(результат выводится в виде файла ) В матрице (6,7) положительные элементы заменить на единичные , а отрицательные обнулить.помогите!!!


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru