Submission #1009309

#TimeUsernameProblemLanguageResultExecution timeMemory
1009309vjudge1timeismoney (balkan11_timeismoney)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN=200, MAXM=10000; int n, m; int xe[MAXM], ye[MAXM], te[MAXM], ce[MAXM]; int link[MAXN], size[MAXN]; int tbest=2e9, cbest=1; vector<int> bestedges; bool tcompare(int x, int y) { if (te[x]<te[y]) return true; return false; } bool ccompare(int x, int y) { if (ce[x]<ce[y]) return true; return false; } int find(int x) { if (link[x]==x) return x; return link[x]=find(link[x]); } void unite(int x, int y) { if (size[x]<size[y]) swap(x, y); size[x]=size[x]+size[y]; link[y]=x; return; } void makehull(vector<int> left, vector<int> right) { vector<pair<int, int> > edges; for (int i=0; i<n-1; i++) { int t=te[left[i]]; int c=ce[left[i]]; edges.push_back({t+c, left[i]}); } for (int i=0; i<n-1; i++) { int t=te[right[i]]; int c=ce[right[i]]; edges.push_back({t+c, right[i]}); } sort(edges.begin(), edges.end()); for (int i=0; i<n; i++) { link[i]=i; size[i]=1; } vector<int> mid; int tsum=0, csum=0; for (int i=0; i<edges.size(); i++) { int x=xe[edges[i].second]; int y=ye[edges[i].second]; int t=te[edges[i].second]; int c=ce[edges[i].second]; if (find(x)==find(y)) continue; unite(find(x), find(y)); mid.push_back(edges[i].second); tsum=tsum+t; csum=csum+c; } if (tsum*csum<tbest*cbest) { tbest=tsum; cbest=csum; bestedges=mid; } if (mid!=left && mid!=right) { makehull(left, mid); makehull(mid, right); } return; } int main() { //ios_base::sync_with_stdio(0); //cin.tie(0); cin >> n >> m; for (int i=0; i<m; i++) cin >> xe[i] >> ye[i] >> te[i] >> ce[i]; int sorted[m]; for (int i=0; i<m; i++) sorted[i]=i; int tsum=0, csum=0; sort(sorted, sorted+m, tcompare); for (int i=0; i<n; i++) { link[i]=i; size[i]=1; } vector<int> tmin; for (int i=0; i<m; i++) { int x=xe[sorted[i]]; int y=ye[sorted[i]]; int t=te[sorted[i]]; int c=ce[sorted[i]]; if (find(x)==find(y)) continue; unite(find(x), find(y)); tmin.push_back(sorted[i]); tsum=tsum+t; csum=csum+c; } if (tsum*csum<tbest*cbest) { tbest=tsum; cbest=csum; bestedges=tmin; } for (int i=0; i<m; i++) sorted[i]=i; sort(sorted, sorted+m, ccompare); for (int i=0; i<n; i++) { link[i]=i; size[i]=1; } vector<int> cmin; tsum=0; csum=0; for (int i=0; i<m; i++) { int x=xe[sorted[i]]; int y=ye[sorted[i]]; int t=te[sorted[i]]; int c=ce[sorted[i]]; if (find(x)==find(y)) continue; unite(find(x), find(y)); cmin.push_back(sorted[i]); tsum=tsum+t; csum=csum+c; } if (tsum*csum<tbest*cbest) { tbest=tsum; cbest=csum; bestedges=cmin; } makehull(tmin, cmin); cout << tbest << ' ' << cbest << '\n'; for (int i=0; i<n-1; i++) { int x=xe[bestedges[i]]; int y=ye[bestedges[i]]; cout << x << ' ' << y << '\n'; } return 0; }

Compilation message (stderr)

timeismoney.cpp: In function 'void unite(int, int)':
timeismoney.cpp:39:9: error: reference to 'size' is ambiguous
   39 |     if (size[x]<size[y])
      |         ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp:39:17: error: reference to 'size' is ambiguous
   39 |     if (size[x]<size[y])
      |                 ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp:41:5: error: reference to 'size' is ambiguous
   41 |     size[x]=size[x]+size[y];
      |     ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp:41:13: error: reference to 'size' is ambiguous
   41 |     size[x]=size[x]+size[y];
      |             ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp:41:21: error: reference to 'size' is ambiguous
   41 |     size[x]=size[x]+size[y];
      |                     ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp: In function 'void makehull(std::vector<int>, std::vector<int>)':
timeismoney.cpp:66:9: error: reference to 'size' is ambiguous
   66 |         size[i]=1;
      |         ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp:70:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |     for (int i=0; i<edges.size(); i++)
      |                   ~^~~~~~~~~~~~~
timeismoney.cpp: In function 'int main()':
timeismoney.cpp:114:9: error: reference to 'size' is ambiguous
  114 |         size[i]=1;
      |         ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~
timeismoney.cpp:142:9: error: reference to 'size' is ambiguous
  142 |         size[i]=1;
      |         ^~~~
In file included from /usr/include/c++/10/string:54,
                 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++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from timeismoney.cpp:1:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
timeismoney.cpp:8:17: note:                 'int size [200]'
    8 | int link[MAXN], size[MAXN];
      |                 ^~~~