A. Коробки

ограничение по времени на тест: 1 секунда

ограничение по памяти на тест: 64 мегабайта

ввод: стандартный ввод

вывод: стандартный вывод

Маленький Леша хочет построить башенку из коробок. У него есть $n$ коробок для этого дела. Но есть проблема – не все коробки можно ставить друг на друга. У каждой коробки есть масса $w$ и прочность $c$. Коробку $a$ можно поставить на коробку $b$ только в случае $c_b ≥ w_a$. Очевидно, что это не единственное препятствие. Так как Леша хочет построить большую башенку то необходимо чтобы каждая коробка могла выдержать одновременно все коробки над ней. Напишите программу которая определяет какую коробку нужно поставить выше, а какую ниже.

Входные данные В первой строке входных данных дано число n количество коробок $(2 ≤  n  ≤ 100000)$. В последующих n строках даны $c_i \text{ и } w_i$, прочность и масса очередной коробки.

Выходные данные Выведите порядок коробок для башенки. Если построить башенку из всех коробок не получается выведите  - 1.

Примеры

Пример 1

входные данные
3
10 20
20 10
1 1
выходные данные
-1

Пример 2

входные данные
4
10 20
15 1
2 1
17 1
выходные данные
1
4
2
3

Разбор

В данной задаче необходимо отсортировать все коробки по сумме чисел $c_i$ и $w_i$. Рассмотрим нижнюю коробку. Необходимо чтобы выполнялось условие $c_j ⩾ \sum_{i̸=j}{ wi } $. Очевидно, что $c_j+w_j ⩾ \sum_{i=2}^{n} w_i $. Тогда можно ставить коробку с максимальной суммой $c_j + w_j$ вниз башенки.

Это жадный алгоритм. Какждый раз берём коробку с максимальной суммой $c_j+w_j$ и ставим вниз.

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

In [1]:
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

struct box
{
    int c;           // Прочность
    int w;           // Вес
    int number;      // Номер коробки
};
In [2]:
bool cmp(const box &a, const box &b)
{
    return a.w + a.c > b.w + b.c;
}
In [3]:
{
    //  Вводим данные о коробках
    int n;
    cin >> n;
    vector<box> a(n);
    int total_w = 0;
    for(int i = 0; i < n; i++)
    {
        cin >> a[i].c >> a[i].w ;
        a[i].number = i + 1;
        total_w += a[i].w;
    }
    
    // Сортируем по сумме весов, в начале массива у нас будет 
    sort(a.begin(), a.end(), cmp);
    
    total_w -= a[0].w;
    int limit = a[0].c;
    bool is_possible = true;
    for (int i = 1; i < n && is_possible; ++i)
    {
        limit = min(limit - a[i].w, a[i].c);
        total_w -= a[i].w;;
        if (total_w > limit)
            is_possible = false;
    }
    if (is_possible)
        for (int i = 0; i < n; ++i)
            cout << a[i].number << "\n";
    else
        cout << "-1\n";
    return 0;
}
3 10 20 20 10 1 1
-1
Out[3]:
0

C. Сессия

ограничение по времени на тест: 1 секунда

ограничение по памяти на тест: 64 мегабайта

ввод: стандартный ввод

вывод: стандартный вывод

Леша учится на втором курсе в институте. Но он КВН-щик и не ходил на пары $4$ месяца. Более того он прогулял всю сессию! Деканат пригрозил Леше отчислением если он не сдаст все предметы. И назначил крайние даты сдачи предметов. Леша решил что не стоит хвататься сразу за все и сдавать все по очереди. Чтобы подготовиться к $i$ предмету Леше нужно $d_i$ дней и он должен сдать его до $t_i$ дня, включительно. Помогите Леше решить в каком порядке готовиться к предметам.

Входные данные В первой строке входного файла дано количество предметов $n$ $(1≤n≤ 100000)$. В последующих $n$ строках даны описания предметов в виде $s$ $d$ $t$, где $s$ это название предмета, $d$ - время необходимое на подготовку к предмету, $t$ - время до которого предмет нужно сдать.

Выходные данные Если Леша может сдать все предметы выведите в n строках номера предметов в том порядке, в котором их следует сдавать. Иначе же выведите $-1$. Предметы нумеруются в порядке ввода, начиная с $1$.

В день сдачи студент может готовиться к экзамену.

Примеры

Пример 1

входные данные
4
Math 10 12
Physics 2 2
History 3 19
Databases 10 20
выходные данные
-1

Пример 2

входные данные
4
Math 2 10
Physics 8 11
Programming 1 12
Geometry 2 20
выходные данные
1
2
3
4

Разбор

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

In [4]:
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

struct exam
{
    string name;
    int data;
    int time;
    int number;
};
In [5]:
bool cmpC(const exam &a, const exam &b)
{
    return a.data < b.data;
}
In [6]:
{
    int n;
    cin >> n;
    vector<exam> a(n);
    for(int i = 0; i < n; i++)
    {
        cin >> a[i].name >> a[i].time >> a[i].data ;
        a[i].number = i + 1;
    }
    sort(a.begin(), a.end(), cmpC);
    int k = 0;
    
    bool is_possible = true;
    vector<int> ans(n);
    for (int i = 0; i < n && is_possible; ++i)
    {
        k += a[i].time;
        if (k > a[i].data)
            is_possible = false;
    }
    if (is_possible)
        for (int i = 0; i < n; ++i)
            cout << a[i].number << "\n";
    else
        cout << "-1\n";
    return 0;
}
4 Math 2 10 Physics 8 11 Programming 1 12 Geometry 2 20
1
2
3
4
Out[6]:
0

B. Белоснежка и $n$ гномов

ограничение по времени на тест: 1 секунда

ограничение по памяти на тест: 64 мегабайта

ввод: стандартный ввод

вывод: стандартный вывод

«Ну не гномы, а наказание какое-то!», — подумала Белоснежка, в очередной раз пытаясь уложить гномов спать. Одного уложишь — другой уже проснулся! И так всю ночь.

У Белоснежки n гномов, и все они очень разные. Она знает, что для того, чтобы уложить спать $i$-го гнома нужно $a_i$ минут, и после этого он будет спать ровно $b_i$ минут. Помогите Белоснежке узнать, может ли она получить хотя бы минутку отдыха, когда все гномы будут спать, и если да, то в каком порядке для этого нужно укладывать гномов спать.

Входные данные Первая строка входного файла содержит число $n$ $(1 ≤ n ≤ 10^5)$, вторая строка содержит числа $a_1, a_2, ... , a_n$, третья – числа $b_1, b_2, ... , b_n$ $(1 ≤ a_i, b_i ≤ 10^9)$.

Выходные данные Выведите в выходной файл $n$ чисел – порядок, в котором нужно укладывать гномов спать. Если Белоснежке отдохнуть не удастся, выведите число  $-1$.

Примеры

Пример 1

входные данные
2
1 10
10 20
выходные данные
2 1

Пример 2

входные данные
2
10 10
10 10
выходные данные
-1

Примечание Например, пусть есть всего два гнома, $a_1 = 1$,  $b_1 = 10$,  $a_2 = 10$,  $b_2 = 20$.

Если Белоснежка сначала начнет укладывать первого гнома, то потом ей потребуется целых 10 минут, чтобы уложить второго, а за это время проснется первый. Если же она начнет со второго гнома, то затем она успеет уложить первого и получит целых 10 минут отдыха.

Разбор

Решение задачи будем искать в виде перестановки $\{c_i\}$, где $i \in [1; n]$. Для того, чтобы существо- вало решение задачи, для всех $i$ должно выполняться основное условие:

$$ b_{c_i} > \sum_{k=i+1}^{n} a_{c_k} \label{\text{1}}$$

Предположим, что мы нашли $\{c_i\}$, при которой Белоснежке удастся уложить гномов, и для некоторый пары соседних элементов $c_i$ и $c_{i+1}$ выполняется условие:

$$ b_{c_{i+1}} + a_{c_{i+1}} > b_{c_i} + a_{c_i} $$

Следовательно:

$$ b_{c_{i}} > a_{c_{i+1}} $$

И тогда:

$$ b_{c_{i+1}} + b_{c_i} > b_{c_i} + a_{c_i} $$$$ b_{c_{i+1}} > a_{c_i} $$

Таким образом, если мы поменяем элементы $c_i$ и $c_{i+1}$ местами, мы не нарушим изначальное условие. Обратное утверждение не верно. Следовательно, ответ на задачу будем искать, исходя из условия:

$$ b_{c_i} + a_{c_i} > b_{c_{i+1}} + a_{c_{i+1}} $$

Единственное, что осталось сделать — отсортировать последовательность гномов в соответствии с этим условием и проверить выполнение основного условия.

In [8]:
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

struct gnome
{
    int sit;
    int sleep;
    int number;
};
In [9]:
bool cmpB(const gnome &a, const gnome &b)
{
    return a.sleep + a.sit > b.sleep + b.sit;
}
In [10]:
{
    int n;
    cin >> n;
    vector<gnome> a(n);
    for(int i = 0; i < n; i++)
    {
        cin >> a[i].sit;
        a[i].number = i + 1;
    }
    for(int i = 0; i < n; i++)
    {
        cin >> a[i].sleep;
    }
    sort(a.begin(), a.end(), cmp);
    int time = a[0].sleep;
    bool is_possible = true;
    vector<int> ans(n);
    for (int i = 1; i < n && is_possible; ++i)
    {
        time = min(time - a[i].sit, a[i].sleep);
        if (time <= 0)
            is_possible = false;
    }
    if (is_possible)
        for (int i = 0; i < n; ++i)
            cout << a[i].number << " ";
    else
        cout << "-1";
    return 0;
}
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:54:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/tuple:39:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/array:39:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/stdexcept:39:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/string:40:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/char_traits.h:39:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algobase.h:71:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:143:31: error: no viable conversion from 'gnome' to 'const box'
        { return bool(_M_comp(*__it1, *__it2)); }
                              ^~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1674:6: note: in instantiation of function template specialization '__gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>::operator()<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > > >' requested here
        if (__comp(__i, __first))
            ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1933:12: note: in instantiation of function template specialization 'std::__heap_select<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__heap_select(__first, __middle, __last, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1948:13: note: in instantiation of function template specialization 'std::__partial_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
              std::__partial_sort(__first, __last, __last, __comp);
                   ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
input_line_8:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'gnome' to 'const box &' for 1st argument
struct box
       ^
input_line_8:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'gnome' to 'box &&' for 1st argument
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:64:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:61:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:222:8: error: no matching function for call to object of type '__gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>'
          if (__comp(__first + __secondChild,
              ^~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:342:9: note: in instantiation of function template specialization 'std::__adjust_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, gnome, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value),
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1672:12: note: in instantiation of function template specialization 'std::__make_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__make_heap(__first, __middle, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1933:12: note: in instantiation of function template specialization 'std::__heap_select<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__heap_select(__first, __middle, __last, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1948:13: note: in instantiation of function template specialization 'std::__partial_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
              std::__partial_sort(__first, __last, __last, __comp);
                   ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:142:9: note: candidate template ignored: substitution failure [with _Iterator1 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Iterator2 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >]
        operator()(_Iterator1 __it1, _Iterator2 __it2)
        ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:177:24: error: no viable conversion from 'gnome' to 'const box'
        { return bool(_M_comp(*__it, __val)); }
                              ^~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:133:42: note: in instantiation of function template specialization '__gnu_cxx::__ops::_Iter_comp_val<bool (*)(const box &, const box &)>::operator()<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, gnome>' requested here
      while (__holeIndex > __topIndex && __comp(__first + __parent, __value))
                                         ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:237:12: note: in instantiation of function template specialization 'std::__push_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, gnome, __gnu_cxx::__ops::_Iter_comp_val<bool (*)(const box &, const box &)> >' requested here
      std::__push_heap(__first, __holeIndex, __topIndex,
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:342:9: note: in instantiation of function template specialization 'std::__adjust_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, gnome, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value),
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1672:12: note: in instantiation of function template specialization 'std::__make_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__make_heap(__first, __middle, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1933:12: note: in instantiation of function template specialization 'std::__heap_select<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__heap_select(__first, __middle, __last, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1948:13: note: in instantiation of function template specialization 'std::__partial_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
              std::__partial_sort(__first, __last, __last, __comp);
                   ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
input_line_8:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'gnome' to 'const box &' for 1st argument
struct box
       ^
input_line_8:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'gnome' to 'box &&' for 1st argument
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:64:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:61:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:253:7: error: no matching function for call to '__adjust_heap'
      std::__adjust_heap(__first, _DistanceType(0),
      ^~~~~~~~~~~~~~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1675:9: note: in instantiation of function template specialization 'std::__pop_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__pop_heap(__first, __middle, __i, __comp);
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1933:12: note: in instantiation of function template specialization 'std::__heap_select<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__heap_select(__first, __middle, __last, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1948:13: note: in instantiation of function template specialization 'std::__partial_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
              std::__partial_sort(__first, __last, __last, __comp);
                   ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:214:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Distance = long, _Tp = gnome, _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>]
    __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:408:4: error: no matching function for call to '__pop_heap'
          std::__pop_heap(__first, __last, __last, __comp);
          ^~~~~~~~~~~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1934:12: note: in instantiation of function template specialization 'std::__sort_heap<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort_heap(__first, __middle, __comp);
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1948:13: note: in instantiation of function template specialization 'std::__partial_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
              std::__partial_sort(__first, __last, __last, __comp);
                   ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_heap.h:243:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>]
    __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
    ^
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:64:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:81:11: error: no matching function for call to object of type '__gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>'
      if (__comp(__a, __b))
          ^~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1921:12: note: in instantiation of function template specialization 'std::__move_median_to_first<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__move_median_to_first(__first, __first + 1, __mid, __last - 1,
           ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1953:11: note: in instantiation of function template specialization 'std::__unguarded_partition_pivot<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
            std::__unguarded_partition_pivot(__first, __last, __comp);
                 ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:142:9: note: candidate template ignored: substitution failure [with _Iterator1 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Iterator2 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >]
        operator()(_Iterator1 __it1, _Iterator2 __it2)
        ^
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:64:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1902:11: error: no matching function for call to object of type '__gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>'
          while (__comp(__first, __pivot))
                 ^~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1923:19: note: in instantiation of function template specialization 'std::__unguarded_partition<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      return std::__unguarded_partition(__first + 1, __last, __first, __comp);
                  ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1953:11: note: in instantiation of function template specialization 'std::__unguarded_partition_pivot<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
            std::__unguarded_partition_pivot(__first, __last, __comp);
                 ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1968:9: note: in instantiation of function template specialization 'std::__introsort_loop<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, long, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__introsort_loop(__first, __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:142:9: note: candidate template ignored: substitution failure [with _Iterator1 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Iterator2 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >]
        operator()(_Iterator1 __it1, _Iterator2 __it2)
        ^
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:64:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1905:11: error: no matching function for call to object of type '__gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>'
          while (__comp(__pivot, __last))
                 ^~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:142:9: note: candidate template ignored: substitution failure [with _Iterator1 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Iterator2 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >]
        operator()(_Iterator1 __it1, _Iterator2 __it2)
        ^
In file included from input_line_5:1:
In file included from /opt/conda/include/xeus/xinterpreter.hpp:12:
In file included from /opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/functional:64:
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1847:8: error: no matching function for call to object of type '__gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)>'
          if (__comp(__i, __first))
              ^~~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1885:9: note: in instantiation of function template specialization 'std::__insertion_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1971:9: note: in instantiation of function template specialization 'std::__final_insertion_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__final_insertion_sort(__first, __last, __comp);
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:142:9: note: candidate template ignored: substitution failure [with _Iterator1 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, _Iterator2 = __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >]
        operator()(_Iterator1 __it1, _Iterator2 __it2)
        ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/predefined_ops.h:215:24: error: no viable conversion from 'gnome' to 'const box'
        { return bool(_M_comp(__val, *__it)); }
                              ^~~~~
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1828:14: note: in instantiation of function template specialization '__gnu_cxx::__ops::_Val_comp_iter<bool (*)(const box &, const box &)>::operator()<gnome, __gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > > >' requested here
      while (__comp(__val, __next))
             ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1867:7: note: in instantiation of function template specialization 'std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Val_comp_iter<bool (*)(const box &, const box &)> >' requested here
        std::__unguarded_linear_insert(__i,
             ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1886:9: note: in instantiation of function template specialization 'std::__unguarded_insertion_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:1971:9: note: in instantiation of function template specialization 'std::__final_insertion_sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
          std::__final_insertion_sort(__first, __last, __comp);
               ^
/opt/conda/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/include/c++/7.3.0/bits/stl_algo.h:4868:12: note: in instantiation of function template specialization 'std::__sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(const box &, const box &)> >' requested here
      std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
           ^
input_line_23:15:5: note: in instantiation of function template specialization 'std::sort<__gnu_cxx::__normal_iterator<gnome *, std::vector<gnome, std::allocator<gnome> > >, bool (*)(const box &, const box &)>' requested here
    sort(a.begin(), a.end(), cmp);
    ^
input_line_8:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'gnome' to 'const box &' for 1st argument
struct box
       ^
input_line_8:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'gnome' to 'box &&' for 1st argument
Interpreter Error: 
In [ ]: