Из чисел и знаков сделать правильные неравенства

109
15 января 2021, 00:10

Даны n целых чисел и ряд из n коробок. Между коробками фиксировано расположены знаки неравенств. Разработайте программу, которая "помещает" числа в коробки так, чтобы неравенства были правильные.

Например, числа: 2 5 1 0. Знаки: < > <. Решение: 0<5>1<2.

Есть наработки, но всё плохо.

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    string s1, s2;
    getline(cin, s1);
    getline(cin, s2);
    sort(s1.begin(), s1.end());
    int cur1 = 0, cur2 = 0, cur = 0;
    int kolright = 0, countright = 0;
    vector<int>rez(s1.size());
    for (int i = 0; i < s2.size(); i++)
    {
        if (s2[i] == '<')
        {
            rez[cur] = s1[cur1];
            cur1++;
            cur2++;
            i++;
        }
        else
        {
            while (s2[i] == '>')
            {
                kolright++;
                i++;
            }
            for (int j = 0; j <= kolright; j++)
                rez[cur2 + j] = s1[cur1 + kolright - j];
            cur2 += kolright; cur2++;
            cur1 += countright; cur1++;
            kolright = 0;
        }
    }
    for (int k = 0; k < rez.size(); k++)
        cout << rez[k] << " ";
    return 0;
}
Answer 1

Даём каждой коробке уровень. Начинаем с самой левой. Её уровень 0 (можно n - 1, для удобства) . Если < уровень следующей коробки + 1 от текущей, если > уровень -1. Это делается за линию. Потом выдаём номера. Начинаем с самого большого уровня и выбираем самые большие из оставшихся. Если во время шага 1 завести массив уровней (всего может быть 2n-1 уровней), в котором хранить какие коробки на этом уровне, то тоже работает за линию.

READ ALSO
Для чего нужен второй параметр у оператора operator delete?

Для чего нужен второй параметр у оператора operator delete?

Есть ли разница в объявлении operator delete(void*) и operator delete(void*, size_t) для класса? Нужен ли на самом деле второй параметр? И если да, то зачем?

112
В iOS не кликабельны input в попап окне fancybox

В iOS не кликабельны input в попап окне fancybox

Обнаружилось, что на iOS устройствах в попап окне Fancybox 3 не кликабельны input поля, те

139
Заменить ссылки на странице

Заменить ссылки на странице

Есть много ссылокНужно дописать им якорь на другую страницу

136
Internet Explorer 8 не вызывается jquery ajax success callback

Internet Explorer 8 не вызывается jquery ajax success callback

Добавляю совместимость интернет-магазина с Internet Explorer 8, для этого использую версию JQuery 110

146