Submission #282239

#TimeUsernameProblemLanguageResultExecution timeMemory
282239VimmerSky Walking (IOI19_walk)C++14
Compilation error
0 ms0 KiB
#include "walk.h"
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>


#define F first
#define S second
#define sz(x) int(x.size())
#define pb push_back
#define N 100001

using namespace std;
using namespace __gnu_pbds;

typedef long long ll;
typedef pair <int, int> ptr;
typedef array <int, 3> a3;

vector <vector <int> > g;

vector <a3> edge;

vector <int> nums[N], who[N];

vector <ll> dst, dstr;

gp_hash_table <int, int> idr[N];

void add(int a, int b, int cost)
{
    g[a].pb(sz(edge));

    g[b].pb(sz(edge));

    edge.pb({a, b, cost});
}

ll min_distance(vector<int> x, vector<int> h, vector<int> l, vector<int> r, vector<int> y, int s, int to)
{
    int n = sz(x);

    int m = sz(l);

    set <pair <int, int> > st; st.clear();

    vector <pair <int, int> > pr; pr.clear();

    for (int j = 0; j < m; j++) {pr.pb({l[j], j + 1}); pr.pb({r[j] + 1, -(j + 1)});}

    sort(pr.begin(), pr.end());

    int u = 0;

    for (int i = 0; i < n; i++)
    {
        while (u < sz(pr) && pr[u].F <= i)
        {
            if (pr[u].S > 0) st.insert({y[pr[u].S - 1], pr[u].S - 1});
              else st.erase({y[-pr[u].S - 1], -pr[u].S - 1});

            u++;
        }

        auto it = st.upper_bound(ptr(h[i], 1e9));

        if (it != st.begin())
        {
            it--;

            while (1)
            {
                nums[i].pb((*it).S);

                if (it == st.begin()) break;

                it--;
            }
        }
    }

    int id = 0;

    ll ans = 1e18;

    set <pair <pair <ll, int>, int> > str;

    for (int i = 0; i < n; i++)
      for (auto j : nums[i])
      {
          idr[i][j] = id++;

          g.emplace_back();

          dst.pb(-1);
          dstr.pb(-1);

          for (auto jr : nums[i])
          {
              if (jr == j) break;

              add(id - 1, idr[i][jr], abs(y[jr] - y[j]));
          }

          if (to == i) {dst[id - 1] = 0; str.insert({{y[j], id - 1}, 0});}
          if (s == i) {dstr[id - 1] = 0; str.insert({{y[j], id - 1}, 1});}
      }

    for (int i = 0; i < n; i++)
        for (auto j : nums[i])
        {
            for (auto I : who[j])
              add(idr[i][j], idr[I][j], abs(x[i] - x[I]));

            who[j].pb(i);
        }

    while (sz(str))
    {
        pair <pair <ll, int>, int> pt = *str.begin(); str.erase(str.begin());

        if (pt.F.F >= ans) return ans;

        for (auto ip : g[pt.F.S])
        {
            a3 itr = edge[ip];

            ll s = pt.F.F + itr[2];

            if (itr[0] == pt.S) swap(itr[0], itr[1]);

            if (ans <= s) continue;

            if (pt.S == 0)
            {
                if (dst[itr[0]] != -1 && dst[itr[0]] <= s) continue;

                if (dstr[itr[0]] != -1) {ans = min(ans, dstr[itr[0]] + s); continue;}

                if (dst[itr[0]] != -1) str.erase({dst[itr[0]], itr[0]});

                dst[itr[0]] = s;

                str.insert({s, itr[0]});
            }
            else
            {
                if (dstr[itr[0]] != - 1 && dstr[itr[0]] <= s) continue;

                if (dst[itr[0]] != -1) {ans = min(ans, dst[itr[0]] + s); continue;}

                if (dstr[itr[0]] != -1) str.erase({dstr[itr[0]], itr[0]});

                dstr[itr[0]] = s;

                str.insert({s, itr[0]});
            }
        }
    }

    if (ans == 1e18) return -1;

	return ans;
}

Compilation message (stderr)

walk.cpp: In function 'll min_distance(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, int, int)':
walk.cpp:140:71: error: no matching function for call to 'std::set<std::pair<std::pair<long long int, int>, int> >::erase(<brace-enclosed initializer list>)'
  140 |                 if (dst[itr[0]] != -1) str.erase({dst[itr[0]], itr[0]});
      |                                                                       ^
In file included from /usr/include/c++/9/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:87,
                 from walk.cpp:2:
/usr/include/c++/9/bits/stl_set.h:654:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::erase(std::set<_Key, _Compare, _Alloc>::const_iterator) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >]'
  654 |       erase(const_iterator __position)
      |       ^~~~~
/usr/include/c++/9/bits/stl_set.h:654:28: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::set<std::pair<std::pair<long long int, int>, int> >::const_iterator' {aka 'std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >'}
  654 |       erase(const_iterator __position)
      |             ~~~~~~~~~~~~~~~^~~~~~~~~~
/usr/include/c++/9/bits/stl_set.h:684:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::size_type std::set<_Key, _Compare, _Alloc>::erase(const key_type&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::size_type = long unsigned int; std::set<_Key, _Compare, _Alloc>::key_type = std::pair<std::pair<long long int, int>, int>]'
  684 |       erase(const key_type& __x)
      |       ^~~~~
/usr/include/c++/9/bits/stl_set.h:684:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const std::pair<std::pair<long long int, int>, int>&'}
  684 |       erase(const key_type& __x)
      |             ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_set.h:706:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::erase(std::set<_Key, _Compare, _Alloc>::const_iterator, std::set<_Key, _Compare, _Alloc>::const_iterator) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >]'
  706 |       erase(const_iterator __first, const_iterator __last)
      |       ^~~~~
/usr/include/c++/9/bits/stl_set.h:706:7: note:   candidate expects 2 arguments, 1 provided
walk.cpp:144:39: error: no matching function for call to 'std::set<std::pair<std::pair<long long int, int>, int> >::insert(<brace-enclosed initializer list>)'
  144 |                 str.insert({s, itr[0]});
      |                                       ^
In file included from /usr/include/c++/9/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:87,
                 from walk.cpp:2:
/usr/include/c++/9/bits/stl_set.h:509:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  509 |       insert(const value_type& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:509:32: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<std::pair<long long int, int>, int>&'}
  509 |       insert(const value_type& __x)
      |              ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_set.h:518:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  518 |       insert(value_type&& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:518:27: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::set<std::pair<std::pair<long long int, int>, int> >::value_type&&' {aka 'std::pair<std::pair<long long int, int>, int>&&'}
  518 |       insert(value_type&& __x)
      |              ~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_set.h:546:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, const value_type&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  546 |       insert(const_iterator __position, const value_type& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:546:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/9/bits/stl_set.h:551:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  551 |       insert(const_iterator __position, value_type&& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:551:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/9/bits/stl_set.h:566:2: note: candidate: 'template<class _InputIterator> void std::set<_Key, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >]'
  566 |  insert(_InputIterator __first, _InputIterator __last)
      |  ^~~~~~
/usr/include/c++/9/bits/stl_set.h:566:2: note:   template argument deduction/substitution failed:
walk.cpp:144:39: note:   candidate expects 2 arguments, 1 provided
  144 |                 str.insert({s, itr[0]});
      |                                       ^
In file included from /usr/include/c++/9/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:87,
                 from walk.cpp:2:
/usr/include/c++/9/bits/stl_set.h:578:7: note: candidate: 'void std::set<_Key, _Compare, _Alloc>::insert(std::initializer_list<_Tp>) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >]'
  578 |       insert(initializer_list<value_type> __l)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:578:43: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::initializer_list<std::pair<std::pair<long long int, int>, int> >'
  578 |       insert(initializer_list<value_type> __l)
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
walk.cpp:152:73: error: no matching function for call to 'std::set<std::pair<std::pair<long long int, int>, int> >::erase(<brace-enclosed initializer list>)'
  152 |                 if (dstr[itr[0]] != -1) str.erase({dstr[itr[0]], itr[0]});
      |                                                                         ^
In file included from /usr/include/c++/9/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:87,
                 from walk.cpp:2:
/usr/include/c++/9/bits/stl_set.h:654:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::erase(std::set<_Key, _Compare, _Alloc>::const_iterator) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >]'
  654 |       erase(const_iterator __position)
      |       ^~~~~
/usr/include/c++/9/bits/stl_set.h:654:28: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::set<std::pair<std::pair<long long int, int>, int> >::const_iterator' {aka 'std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >'}
  654 |       erase(const_iterator __position)
      |             ~~~~~~~~~~~~~~~^~~~~~~~~~
/usr/include/c++/9/bits/stl_set.h:684:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::size_type std::set<_Key, _Compare, _Alloc>::erase(const key_type&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::size_type = long unsigned int; std::set<_Key, _Compare, _Alloc>::key_type = std::pair<std::pair<long long int, int>, int>]'
  684 |       erase(const key_type& __x)
      |       ^~~~~
/usr/include/c++/9/bits/stl_set.h:684:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const std::pair<std::pair<long long int, int>, int>&'}
  684 |       erase(const key_type& __x)
      |             ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_set.h:706:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::erase(std::set<_Key, _Compare, _Alloc>::const_iterator, std::set<_Key, _Compare, _Alloc>::const_iterator) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >]'
  706 |       erase(const_iterator __first, const_iterator __last)
      |       ^~~~~
/usr/include/c++/9/bits/stl_set.h:706:7: note:   candidate expects 2 arguments, 1 provided
walk.cpp:156:39: error: no matching function for call to 'std::set<std::pair<std::pair<long long int, int>, int> >::insert(<brace-enclosed initializer list>)'
  156 |                 str.insert({s, itr[0]});
      |                                       ^
In file included from /usr/include/c++/9/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:87,
                 from walk.cpp:2:
/usr/include/c++/9/bits/stl_set.h:509:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  509 |       insert(const value_type& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:509:32: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<std::pair<long long int, int>, int>&'}
  509 |       insert(const value_type& __x)
      |              ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_set.h:518:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  518 |       insert(value_type&& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:518:27: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::set<std::pair<std::pair<long long int, int>, int> >::value_type&&' {aka 'std::pair<std::pair<long long int, int>, int>&&'}
  518 |       insert(value_type&& __x)
      |              ~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_set.h:546:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, const value_type&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  546 |       insert(const_iterator __position, const value_type& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:546:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/9/bits/stl_set.h:551:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<std::pair<long long int, int>, int> >; std::set<_Key, _Compare, _Alloc>::value_type = std::pair<std::pair<long long int, int>, int>]'
  551 |       insert(const_iterator __position, value_type&& __x)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:551:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/9/bits/stl_set.h:566:2: note: candidate: 'template<class _InputIterator> void std::set<_Key, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >]'
  566 |  insert(_InputIterator __first, _InputIterator __last)
      |  ^~~~~~
/usr/include/c++/9/bits/stl_set.h:566:2: note:   template argument deduction/substitution failed:
walk.cpp:156:39: note:   candidate expects 2 arguments, 1 provided
  156 |                 str.insert({s, itr[0]});
      |                                       ^
In file included from /usr/include/c++/9/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:87,
                 from walk.cpp:2:
/usr/include/c++/9/bits/stl_set.h:578:7: note: candidate: 'void std::set<_Key, _Compare, _Alloc>::insert(std::initializer_list<_Tp>) [with _Key = std::pair<std::pair<long long int, int>, int>; _Compare = std::less<std::pair<std::pair<long long int, int>, int> >; _Alloc = std::allocator<std::pair<std::pair<long long int, int>, int> >]'
  578 |       insert(initializer_list<value_type> __l)
      |       ^~~~~~
/usr/include/c++/9/bits/stl_set.h:578:43: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::initializer_list<std::pair<std::pair<long long int, int>, int> >'
  578 |       insert(initializer_list<value_type> __l)
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~