Submission #786406

#TimeUsernameProblemLanguageResultExecution timeMemory
786406minhcooltimeismoney (balkan11_timeismoney)C++17
Compilation error
0 ms0 KiB
#define local #ifndef local #include "" #endif #include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using namespace std; //#define int long long #define fi first #define se second #define pb push_back #define mp make_pair typedef pair<int, int> ii; typedef pair<ii, int> iii; typedef pair<ii, ii> iiii; const int N = 3e5 + 5; const int oo = 1e9 + 7, mod = 1e9 + 7; mt19937 rng(1); int rnd(int l, int r){ int temp = rng() % (r - l + 1); return abs(temp) + l; } int n, m; vector<iiii> edges; vector<iiii> edges2; int rt[N], sz[N]; int root(int x){ return (x == rt[x] ? x : rt[x] = root(rt[x])); } bool merge(int x, int y){ x = root(x), y = root(y); if(x == y) return 0; sz[x] += sz[y]; rt[y] = x; return 1; } bool cmp(iiii a, iiii b){ return a.se.fi < b.se.fi; } pair<int, ii> answer = {oo, {0, 0}}; map<ii, ii> mpp; void solve(ii a, ii b){ if(a.fi == b.fi || a.se == b.se) return; //cout << a.fi << " " << a.se << " " << b.fi << " " << b.se << "\n"; if(b.fi < a.fi) swap(a, b); if(a.se < b.se) return; int temp1 = b.fi - a.fi, temp2 = a.se - b.se, cnt = 0; //assert(temp1 >= 0 && temp2 >= 0); //cout << temp1 << " " << temp2 << "\n"; for(auto it : edges){ edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}}); cnt++; } sort(edges2.begin(), edges2.end(), cmp); int tol_a = 0, tol_b = 0; for(int i = 1; i <= n; i++){ sz[i] = 1, rt[i] = i; } for(auto it : edges2){ if(merge(it.fi.fi, it.fi.se)){ //cout << it.fi.fi << " " << it.fi.se << "\n"; tol_a += edges[it.se.se].se.fi; tol_b += edges[it.se.se].se.se; } } answer = min(answer, {tol_a * tol_b, {tol_a, tol_b}}); if(mpp.find({tol_a, tol_b}) == mpp.end()) mpp[{tol_a, tol_b}] = {temp2, temp1}; //cout << tol_a << " " << tol_b << " " << temp2 << " " << temp1 << "\n"; if ((a.se - b.se) * (tol_a - a.fi) == (a.se - tol_b) * (b.fi - a.fi)) { // answer = min(answer, {a.fi * a.se, a}); // answer = min(answer, {b.fi * b.se, b}); return; } solve(a, {tol_a, tol_b}); solve({tol_a, tol_b}, b); } bool cmp1(iiii a, iiii b){ return a.se.fi < b.se.se; } bool cmp2(iiii a, iiii b){ return a.se.se < b.se.se; } #ifdef local void process(){ cin >> n >> m; for(int i = 1; i <= m; i++){ int x, y, a, b; cin >> x >> y >> a >> b; x++, y++; edges.pb({{x, y}, {a, b}}); } sort(edges.begin(), edges.end(), cmp1); for(int i = 1; i <= n; i++) sz[i] = 1, rt[i] = i; ii tol_1 = {0, 0}; for(auto it : edges) if(merge(it.fi.fi, it.fi.se)) tol_1 = {tol_1.fi + it.se.fi, tol_1.se + it.se.se}; sort(edges.begin(), edges.end(), cmp2); for(int i = 1; i <= n; i++) sz[i] = 1, rt[i] = i; ii tol_2 = {0, 0}; for(auto it : edges) if(merge(it.fi.fi, it.fi.se)) tol_2 = {tol_2.fi + it.se.fi, tol_2.se + it.se.se}; edges2.resize(edges); mpp[tol_1] = {1, 0}; mpp[tol_2] = {0, 1}; answer = min(answer, {tol_1.fi * tol_1.se, tol_1}); answer = min(answer, {tol_2.fi * tol_2.se, tol_2}); solve(tol_1, tol_2); cout << answer.se.fi << " " << answer.se.se << "\n"; //cout << mpp[answer.se].fi << " " << mpp[answer.se].se << "\n"; // edges2.clear(); int cnt = 0; for(auto it : edges){ edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}}); cnt++; } sort(edges2.begin(), edges2.end(), cmp); int tol_a = 0, tol_b = 0; for(int i = 1; i <= n; i++){ sz[i] = 1, rt[i] = i; } for(auto it : edges2){ if(merge(it.fi.fi, it.fi.se)){ cout << it.fi.fi - 1 << " " << it.fi.se - 1 << "\n"; } } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); //freopen("kek.inp", "r", stdin); //freopen("kek.out", "w", stdout); process(); } #endif

Compilation message (stderr)

timeismoney.cpp: In function 'void solve(ii, ii)':
timeismoney.cpp:11:12: warning: left operand of comma operator has no effect [-Wunused-value]
   11 | #define fi first
      |            ^
timeismoney.cpp:67:26: note: in expansion of macro 'fi'
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                          ^~
timeismoney.cpp:67:38: error: expected ';' before '}' token
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                      ^
timeismoney.cpp:12:12: warning: right operand of comma operator has no effect [-Wunused-value]
   12 | #define se second
      |            ^
timeismoney.cpp:67:36: note: in expansion of macro 'se'
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                    ^~
timeismoney.cpp:67:39: error: expected primary-expression before ',' token
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                       ^
timeismoney.cpp:67:41: error: expected primary-expression before '{' token
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                         ^
timeismoney.cpp:67:84: error: no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<std::pair<std::pair<int, int>, std::pair<int, int> > >, std::pair<std::pair<int, int>, std::pair<int, int> > >::value_type' {aka 'std::pair<std::pair<int, int>, std::pair<int, int> >'} and 'void')
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                                                                    ^
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 timeismoney.cpp:5:
/usr/include/c++/10/bits/stl_pair.h:390:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch&>::type) [with _T1 = std::pair<int, int>; _T2 = std::pair<int, int>; typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch&>::type = const std::pair<std::pair<int, int>, std::pair<int, int> >&]'
  390 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:393:41: note:   no known conversion for argument 1 from 'void' to 'std::conditional<true, const std::pair<std::pair<int, int>, std::pair<int, int> >&, const std::__nonesuch&>::type' {aka 'const std::pair<std::pair<int, int>, std::pair<int, int> >&'}
  390 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~    
  391 |   __and_<is_copy_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  392 |          is_copy_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  393 |   const pair&, const __nonesuch&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_pair.h:401:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch&&>::type) [with _T1 = std::pair<int, int>; _T2 = std::pair<int, int>; typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch&&>::type = std::pair<std::pair<int, int>, std::pair<int, int> >&&]'
  401 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:404:31: note:   no known conversion for argument 1 from 'void' to 'std::conditional<true, std::pair<std::pair<int, int>, std::pair<int, int> >&&, std::__nonesuch&&>::type' {aka 'std::pair<std::pair<int, int>, std::pair<int, int> >&&'}
  401 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~
  402 |   __and_<is_move_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  403 |          is_move_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  404 |   pair&&, __nonesuch&&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_pair.h:418:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, const _U1&>, std::is_assignable<_T2&, const _U2&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(const std::pair<_U1, _U2>&) [with _U1 = _U1; _U2 = _U2; _T1 = std::pair<int, int>; _T2 = std::pair<int, int>]'
  418 |  operator=(const pair<_U1, _U2>& __p)
      |  ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:418:2: note:   template argument deduction/substitution failed:
timeismoney.cpp:67:84: note:   mismatched types 'const std::pair<_T1, _T2>' and 'void'
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                                                                    ^
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 timeismoney.cpp:5:
/usr/include/c++/10/bits/stl_pair.h:430:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, _U1&&>, std::is_assignable<_T2&, _U2&&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(std::pair<_U1, _U2>&&) [with _U1 = _U1; _U2 = _U2; _T1 = std::pair<int, int>; _T2 = std::pair<int, int>]'
  430 |  operator=(pair<_U1, _U2>&& __p)
      |  ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:430:2: note:   template argument deduction/substitution failed:
timeismoney.cpp:67:84: note:   mismatched types 'std::pair<_T1, _T2>' and 'void'
   67 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * temp2 + it.se.se * temp1, cnt}});
      |                                                                                    ^
timeismoney.cpp: In function 'void process()':
timeismoney.cpp:119:24: error: no matching function for call to 'std::vector<std::pair<std::pair<int, int>, std::pair<int, int> > >::resize(std::vector<std::pair<std::pair<int, int>, std::pair<int, int> > >&)'
  119 |     edges2.resize(edges);
      |                        ^
In file included from /usr/include/c++/10/vector:67,
                 from /usr/include/c++/10/functional:62,
                 from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/10/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from timeismoney.cpp:5:
/usr/include/c++/10/bits/stl_vector.h:937:7: note: candidate: 'void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::pair<std::pair<int, int>, std::pair<int, int> >; _Alloc = std::allocator<std::pair<std::pair<int, int>, std::pair<int, int> > >; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
  937 |       resize(size_type __new_size)
      |       ^~~~~~
/usr/include/c++/10/bits/stl_vector.h:937:24: note:   no known conversion for argument 1 from 'std::vector<std::pair<std::pair<int, int>, std::pair<int, int> > >' to 'std::vector<std::pair<std::pair<int, int>, std::pair<int, int> > >::size_type' {aka 'long unsigned int'}
  937 |       resize(size_type __new_size)
      |              ~~~~~~~~~~^~~~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:957:7: note: candidate: 'void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = std::pair<std::pair<int, int>, std::pair<int, int> >; _Alloc = std::allocator<std::pair<std::pair<int, int>, std::pair<int, int> > >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::pair<std::pair<int, int>, std::pair<int, int> >]'
  957 |       resize(size_type __new_size, const value_type& __x)
      |       ^~~~~~
/usr/include/c++/10/bits/stl_vector.h:957:7: note:   candidate expects 2 arguments, 1 provided
timeismoney.cpp:11:12: warning: left operand of comma operator has no effect [-Wunused-value]
   11 | #define fi first
      |            ^
timeismoney.cpp:131:26: note: in expansion of macro 'fi'
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                          ^~
timeismoney.cpp:131:38: error: expected ';' before '}' token
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                      ^
timeismoney.cpp:12:12: warning: right operand of comma operator has no effect [-Wunused-value]
   12 | #define se second
      |            ^
timeismoney.cpp:131:36: note: in expansion of macro 'se'
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                    ^~
timeismoney.cpp:131:39: error: expected primary-expression before ',' token
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                       ^
timeismoney.cpp:131:41: error: expected primary-expression before '{' token
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                         ^
timeismoney.cpp:131:108: error: no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<std::pair<std::pair<int, int>, std::pair<int, int> > >, std::pair<std::pair<int, int>, std::pair<int, int> > >::value_type' {aka 'std::pair<std::pair<int, int>, std::pair<int, int> >'} and 'void')
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                                                                                            ^
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 timeismoney.cpp:5:
/usr/include/c++/10/bits/stl_pair.h:390:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch&>::type) [with _T1 = std::pair<int, int>; _T2 = std::pair<int, int>; typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch&>::type = const std::pair<std::pair<int, int>, std::pair<int, int> >&]'
  390 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:393:41: note:   no known conversion for argument 1 from 'void' to 'std::conditional<true, const std::pair<std::pair<int, int>, std::pair<int, int> >&, const std::__nonesuch&>::type' {aka 'const std::pair<std::pair<int, int>, std::pair<int, int> >&'}
  390 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~    
  391 |   __and_<is_copy_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  392 |          is_copy_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  393 |   const pair&, const __nonesuch&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_pair.h:401:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch&&>::type) [with _T1 = std::pair<int, int>; _T2 = std::pair<int, int>; typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch&&>::type = std::pair<std::pair<int, int>, std::pair<int, int> >&&]'
  401 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:404:31: note:   no known conversion for argument 1 from 'void' to 'std::conditional<true, std::pair<std::pair<int, int>, std::pair<int, int> >&&, std::__nonesuch&&>::type' {aka 'std::pair<std::pair<int, int>, std::pair<int, int> >&&'}
  401 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~
  402 |   __and_<is_move_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  403 |          is_move_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  404 |   pair&&, __nonesuch&&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_pair.h:418:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, const _U1&>, std::is_assignable<_T2&, const _U2&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(const std::pair<_U1, _U2>&) [with _U1 = _U1; _U2 = _U2; _T1 = std::pair<int, int>; _T2 = std::pair<int, int>]'
  418 |  operator=(const pair<_U1, _U2>& __p)
      |  ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:418:2: note:   template argument deduction/substitution failed:
timeismoney.cpp:131:108: note:   mismatched types 'const std::pair<_T1, _T2>' and 'void'
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                                                                                            ^
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 timeismoney.cpp:5:
/usr/include/c++/10/bits/stl_pair.h:430:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, _U1&&>, std::is_assignable<_T2&, _U2&&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(std::pair<_U1, _U2>&&) [with _U1 = _U1; _U2 = _U2; _T1 = std::pair<int, int>; _T2 = std::pair<int, int>]'
  430 |  operator=(pair<_U1, _U2>&& __p)
      |  ^~~~~~~~
/usr/include/c++/10/bits/stl_pair.h:430:2: note:   template argument deduction/substitution failed:
timeismoney.cpp:131:108: note:   mismatched types 'std::pair<_T1, _T2>' and 'void'
  131 |   edges2[cnt] = ({{it.fi.fi, it.fi.se}, {it.se.fi * mpp[answer.se].fi + it.se.se * mpp[answer.se].se, cnt}});
      |                                                                                                            ^
timeismoney.cpp:135:6: warning: unused variable 'tol_a' [-Wunused-variable]
  135 |  int tol_a = 0, tol_b = 0;
      |      ^~~~~
timeismoney.cpp:135:17: warning: unused variable 'tol_b' [-Wunused-variable]
  135 |  int tol_a = 0, tol_b = 0;
      |                 ^~~~~