Submission #1090259

#TimeUsernameProblemLanguageResultExecution timeMemory
1090259pmqwertyMagic Tree (CEOI19_magictree)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 100; vector<int> a[MAXN]; int v[MAXN]; int w[MAXN]; int d[MAXN]; int n, m, k; int par[MAXN]; int outdegree[MAXN]; namespace sub1{ bool check(){ if (!(n <= 20 && k <= 20)) return 0; for (int i = 1; i <= m; i++){ if (w[i] > 1) return 0; } return 1; } int mark[21]; bool flag = true; void dfs(int u, int t){ if (mark[u]){ if (d[u] > t){ flag = false; } } for (int v: a[u]){ dfs(v, (mark[u] ? d[u]: t)); } } void solve(){ long long ans = 0; for (int mask = 0; mask < (1 << m); mask++){ memset(mark, 0, sizeof(mark)); for (int i = 0; i < m; i++){ if (mask & (1 << i)){ mark[v[i + 1]] = true; } } flag = true; dfs(1, 1e9); if (flag){ ans = max(ans, __builtin_popcount(mask)); } } cout << ans << '\n'; } } namespace sub2{ bool check(){ for (int i = 1; i <= m; i++){ if (outdegree[v[i]] != 0) return 0; } return 1; } void solve(){ long long ans = 0; for (int i = 1; i <= m; i++){ ans += w[i]; } cout << ans << '\n'; } } bool sub3_flag = true; namespace sub3{ bool check(){ if (!sub3_flag) return false; for (int i = 1; i <= m; i++){ if (w[i] > 1) return false; } return true; } int lis(vector<int> const& a) { int n = a.size(); const int INF = 1e9; vector<int> l(n+1, INF); l[0] = -INF; for (int i = 0; i < n; i++) { int last = upper_bound(l.begin(), l.end(), a[i]) - l.begin(); if (l[last-1] < a[i] && a[i] < l[last]) l[last] = a[i]; } int ans = 0; for (int i = 0; i <= n; i++) { if (l[i] < INF) ans = i; } return ans; } void solve(){ vector<int> temp(n, 1e9); for (int i = 1; i <= m; i++){ temp[v[i] - 1] = d[i]; } cout << lis(temp) << '\n'; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m >> k; for (int i = 2; i <= n; i++){ int x; cin >> x; a[x].push_back(i); outdegree[x]++; sub3_flag &= ((x == (i - 1))); } for (int i = 1; i <= m; i++){ cin >> v[i] >> d[i] >> w[i]; } if (sub1::check()) sub1::solve(); else if (sub2::check()) sub2::solve(); else if (sub3::check()) sub3::solve(); }

Compilation message (stderr)

magictree.cpp: In function 'void sub1::solve()':
magictree.cpp:43:57: error: no matching function for call to 'max(long long int&, int)'
   43 |                  ans = max(ans, __builtin_popcount(mask));
      |                                                         ^
In file included 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 magictree.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
magictree.cpp:43:57: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   43 |                  ans = max(ans, __builtin_popcount(mask));
      |                                                         ^
In file included 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 magictree.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
magictree.cpp:43:57: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   43 |                  ans = max(ans, __builtin_popcount(mask));
      |                                                         ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from magictree.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
magictree.cpp:43:57: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   43 |                  ans = max(ans, __builtin_popcount(mask));
      |                                                         ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from magictree.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
magictree.cpp:43:57: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   43 |                  ans = max(ans, __builtin_popcount(mask));
      |                                                         ^