Submission #1119497

#TimeUsernameProblemLanguageResultExecution timeMemory
1119497mmdrzadaDynamic Diameter (CEOI19_diameter)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
 
using namespace std;


typedef vector<int> vi;
typedef vector<char> vc;
typedef pair<int, int> pii;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef vector<ll> vll;
 
#define sep ' '
#define F first
#define S second
#define fastIO   ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pb push_back
#define kill(x) {cout << x << endl;return;}
#define sz(x) int(x.size())
#define SP(x) setprecision(x) 
#define mod(x) (1ll*x%M+M)%M
#define pq priority_queue
#define mid (l+r)/2
// #define mid2 (l+r+1)/2
#define pll pair<ll, ll>
#define REP(i, k) for (int i = 0 ; i < k ; i ++)
#define MP make_pair
#define int ll

struct Node {
	ll a, b, c, d, e, lazy;
	Node () {
		a = b = c = d = e = -2e18;
		lazy = 0;
	}
};
const int M = 998244353;
const int N = 3e5+10;
int n, q; ll W;
vector<pair<int, ll>> adj[N];
ll h[N];
vector<pii> E, SE;
int st[N], fn[N];
vector<int> order;
Node node[N<<2];
vector<ll> Ws;
ll weight[N];

Node merge(Node x, Node y) {
	Node res;
	res.a = max(x.a, y.a);
	res.b = max(x.b, y.b);
	res.c = max({x.c, x.a + y.b, y.c});
	res.d = max({x.d, x.b + y.a, y.d});
	res.e = max({x.e, x.c + y.a, x.a + y.d, y.e});
	return res;
}

void dolazy(int id) {
	ll C = node[id].lazy;
	node[id].lazy = 0;
	vi ids = {2*id, 2*id+1};
	for(auto i: ids) {
		node[i].lazy += C;
		node[i].a += C;
		node[i].b -= 2*C;
		node[i].c -= C;
		node[i].d -= C;
	}
}

int ID(int u, int v) {
	if (u > v) swap(u, v);
	return lower_bound(SE.begin(), SE.end(), MP(u, v)) - SE.begin();
}

void dfs(int v = 0, int p = -1) {
	for(auto [neigh, w]: adj[v]) {
		if (neigh == p) continue;
		h[neigh] = 0ll + h[v] + w;
		order.pb(h[v]);
		st[ID(v, neigh)] = order.size();
		dfs(neigh, v);
		fn[ID(v, neigh)] = order.size();
	}
	order.pb(h[v]);
}

void build(int l = 0, int r = n, int id = 1) {
	if (r-l == 1) {
		node[id].a = order[l];
		node[id].b = -2ll*order[l];
		node[id].c = node[id].d = -order[l];
		node[id].e = 0;
		return;
	}
	build(l, mid, 2*id), build(mid, r, 2*id+1);
	node[id] = merge(node[2*id], node[2*id+1]);
}

void upd(int L, int R, ll C, int l=0, int r=n, int id=1) {
	if (R <= l || r <= L)
		return;
	if (L <= l && r <= R) {
		node[id].lazy += C;
		node[id].a += C;
		node[id].b -= 2*C;
		node[id].c -= C;
		node[id].d -= C;
		return;
	}
	dolazy(id);
	upd(L, R, C, l, mid, 2*id), upd(L, R, C, mid, r, 2*id+1);
	node[id] = merge(node[2*id], node[2*id+1]);
}
int get(int ind, int l=0, int r=n, int id=1) {
	if (r-l == 1) return node[id].a;
	dolazy(id);
	if (ind < mid) return get(ind, l, mid, 2*id);
	return get(ind, mid, r, 2*id+1);
}
void fulldata(int l=0, int r=n, int id=1) {
	cout << id << sep << l << sep << r << sep << node[id].a << sep << node[id].b << sep << node[id].e << endl;
	if (r-l > 1) fulldata(l, mid, 2*id), fulldata(mid, r, 2*id+1);
}
void solve() {
	cin >> n >> q >> W;
	int m = n;
	for(int i = 0 ; i < n-1 ; i ++) {
		int u, v, w; cin >> u >> v >> w; u--, v--; if (u > v) swap(u, v);
		adj[u].pb({v, w}), adj[v].pb({u, w});
		Ws.pb(w);
		E.pb({u, v});
	}
	SE = E;
	sort(SE.begin(), SE.end());
	for(int i = 0 ; i < n-1 ; i ++) {
		auto [u, v] = E[i];
		weight[ID(u, v)] = Ws[i];
	}
	dfs();
	n = 2*n-1;
	build();
	ll last = 0;
	while(q--) {
		ll d, w; cin >> d >> w;
		d = (0ll + d + last) % (m-1);
		w = (0ll + w + last) % W;
		auto [u, v] = E[d];
		int id = ID(u, v);
		int s = st[id], f = fn[id];
		// [s, f)
		upd(s, f, 0ll + w - weight[id]);
		weight[id] = w;
		cout << node[1].e << endl;
		last = node[1].e;
	}
}

// check MAXN
int32_t main() {
	fastIO;
	
	solve();
	
	return 0;
}

Compilation message (stderr)

diameter.cpp: In function 'void dolazy(ll)':
diameter.cpp:62:13: warning: narrowing conversion of '(2 * id)' from 'll' {aka 'long long int'} to 'int' [-Wnarrowing]
   62 |  vi ids = {2*id, 2*id+1};
      |            ~^~~
diameter.cpp:62:13: warning: narrowing conversion of '(2 * id)' from 'll' {aka 'long long int'} to 'int' [-Wnarrowing]
diameter.cpp:62:22: warning: narrowing conversion of '((2 * id) + 1)' from 'll' {aka 'long long int'} to 'int' [-Wnarrowing]
   62 |  vi ids = {2*id, 2*id+1};
      |                  ~~~~^~
diameter.cpp:62:22: warning: narrowing conversion of '((2 * id) + 1)' from 'll' {aka 'long long int'} to 'int' [-Wnarrowing]
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_less_val::operator()(_Iterator, _Value&) const [with _Iterator = __gnu_cxx::__normal_iterator<std::pair<int, int>*, std::vector<std::pair<int, int> > >; _Value = const std::pair<long long int, long long int>]':
/usr/include/c++/10/bits/stl_algobase.h:1324:14:   required from '_ForwardIterator std::__lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<int, int>*, std::vector<std::pair<int, int> > >; _Tp = std::pair<long long int, long long int>; _Compare = __gnu_cxx::__ops::_Iter_less_val]'
/usr/include/c++/10/bits/stl_algobase.h:1359:32:   required from '_ForwardIterator std::lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::pair<int, int>*, std::vector<std::pair<int, int> > >; _Tp = std::pair<long long int, long long int>]'
diameter.cpp:74:51:   required from here
/usr/include/c++/10/bits/predefined_ops.h:67:22: error: no match for 'operator<' (operand types are 'std::pair<int, int>' and 'const std::pair<long long int, long long int>')
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1096:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __gnu_cxx::__normal_iterator<_IteratorL, _Container>&, const __gnu_cxx::__normal_iterator<_IteratorR, _Container>&)'
 1096 |     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1096:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1104:5: note: candidate: 'template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)'
 1104 |     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1104:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1075:5: note: candidate: 'template<class _BiIter> bool std::__cxx11::operator<(const std::__cxx11::sub_match<_BiIter>&, const std::__cxx11::sub_match<_BiIter>&)'
 1075 |     operator<(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1075:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1156:5: note: candidate: 'template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::__cxx11::operator<(std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&, const std::__cxx11::sub_match<_BiIter>&)'
 1156 |     operator<(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1156:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1249:5: note: candidate: 'template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::__cxx11::operator<(const std::__cxx11::sub_match<_BiIter>&, std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&)'
 1249 |     operator<(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1249:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1323:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator<(const typename std::iterator_traits<_Iter>::value_type*, const std::__cxx11::sub_match<_BiIter>&)'
 1323 |     operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1323:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'const std::pair<long long int, long long int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1417:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator<(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type*)'
 1417 |     operator<(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1417:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1492:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator<(const typename std::iterator_traits<_Iter>::value_type&, const std::__cxx11::sub_match<_BiIter>&)'
 1492 |     operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1492:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'const std::pair<long long int, long long int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/regex.h:1592:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator<(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type&)'
 1592 |     operator<(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/10/bits/regex.h:1592:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_pair.h:489:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator<(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)'
  489 |     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:489:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   deduced conflicting types for parameter '_T1' ('int' and 'long long int')
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:366:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)'
  366 |     operator<(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:366:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::reverse_iterator<_Iterator>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:404:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator<(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)'
  404 |     operator<(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:404:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::reverse_iterator<_Iterator>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1451:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator<(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)'
 1451 |     operator<(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1451:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::move_iterator<_IteratorL>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:67,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/stl_iterator.h:1507:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator<(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)'
 1507 |     operator<(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/10/bits/stl_iterator.h:1507:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/stl_algobase.h:71,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from diameter.cpp:1:
/usr/include/c++/10/bits/predefined_ops.h:67:22: note:   'std::pair<int, int>' is not derived from 'const std::move_iterator<_IteratorL>'
   67 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~
In file included from /usr/include/c++/10/bits/basic_string.h:48,
                 from /usr/include/c++/10/string:55,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++