Даны 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;
}
Даём каждой коробке уровень. Начинаем с самой левой. Её уровень 0 (можно n - 1, для удобства) . Если < уровень следующей коробки + 1 от текущей, если > уровень -1. Это делается за линию. Потом выдаём номера. Начинаем с самого большого уровня и выбираем самые большие из оставшихся. Если во время шага 1 завести массив уровней (всего может быть 2n-1 уровней), в котором хранить какие коробки на этом уровне, то тоже работает за линию.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть ли разница в объявлении operator delete(void*) и operator delete(void*, size_t) для класса? Нужен ли на самом деле второй параметр? И если да, то зачем?
Обнаружилось, что на iOS устройствах в попап окне Fancybox 3 не кликабельны input поля, те
Добавляю совместимость интернет-магазина с Internet Explorer 8, для этого использую версию JQuery 110