# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
168681 | 2019-12-15T09:21:29 Z | dolphingarlic | Vještica (COCI16_vjestica) | C++14 | Compilation error |
0 ms | 0 KB |
/* COCI 2016 Vjestica - Firstly, notice that N is very small. This implies that we should use a bitmask - For each mask, we split the active words into 2 groups and solve recursively for those - solve(mask) = min(solve(A) + solve(B)) where A + B = mask, A & mask == A, B & mask == B, and A & B == 0 - Complexity: O(N log N * 2^N) */ #include <bits/stdc++.h> #define FOR(i, x, y) for (int i = x; i < y; i++) typedef long long ll; using namespace std; int n; unordered_map<char, int> cnt[16]; int solve(int mask) { int ans = INT_MAX, common = 0; if (!mask) return 0; map<char, int> diff; for (char i = 'a'; i <= 'z'; i++) { diff[i] = INT_MAX; FOR(j, 0, n) if (mask & (1 << j)) diff[i] = min(diff[i], cnt[j][i]); common += diff[i]; } FOR(i, 0, n) { if (mask & (1 << i)) { if (diff == cnt[i]) mask -= (1<<i); else for (char j = 'a'; j <= 'z'; j++) cnt[i][j] -= diff[j]; } } if (!mask) return common; FOR(i, (common == 0), mask) { if ((mask & i) == i) ans = min(ans, solve(i) + solve(mask - i)); } FOR(i, 0, n) { if (mask & (1 << i)) { for (char j = 'a'; j <= 'z'; j++) cnt[i][j] += diff[j]; } } return ans + common; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; FOR(i, 0, n) { for (char j = 'a'; j <= 'z'; j++) cnt[i][j] = 0; string s; cin >> s; for (char j : s) cnt[i][j]++; } cout << solve((1 << n) - 1) + 1; return 0; }
Compilation message
vjestica.cpp: In function 'int solve(int)': vjestica.cpp:30:22: error: no match for 'operator==' (operand types are 'std::map<char, int>' and 'std::unordered_map<char, int>') if (diff == cnt[i]) mask -= (1<<i); ~~~~~^~~~~~~~~ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:940:5: note: candidate: template<class _BiIter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const std::__cxx11::sub_match<_BiIter>&) operator==(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) ^~~~~~~~ /usr/include/c++/7/bits/regex.h:940:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1013: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>&) operator==(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1013:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1093: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>&) operator==(const sub_match<_Bi_iter>& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1093:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1173: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>&) operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1173:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::unordered_map<char, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1247: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*) operator==(const sub_match<_Bi_iter>& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1247:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1321: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>&) operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1321:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::unordered_map<char, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1401: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&) operator==(const sub_match<_Bi_iter>& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1401:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/regex:62:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:110, from vjestica.cpp:9: /usr/include/c++/7/bits/regex.h:1920:5: note: candidate: template<class _Bi_iter, class _Alloc> bool std::__cxx11::operator==(const std::__cxx11::match_results<_BiIter, _Alloc>&, const std::__cxx11::match_results<_BiIter, _Alloc>&) operator==(const match_results<_Bi_iter, _Alloc>& __m1, ^~~~~~~~ /usr/include/c++/7/bits/regex.h:1920:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::match_results<_BiIter, _Alloc>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/iosfwd:40:0, from /usr/include/c++/7/ios:38, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/postypes.h:216:5: note: candidate: template<class _StateT> bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&) operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) ^~~~~~~~ /usr/include/c++/7/bits/postypes.h:216:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::fpos<_StateT>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0, from /usr/include/c++/7/bits/char_traits.h:39, from /usr/include/c++/7/ios:40, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/stl_pair.h:443:5: note: candidate: template<class _T1, class _T2> constexpr bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&) operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) ^~~~~~~~ /usr/include/c++/7/bits/stl_pair.h:443:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::pair<_T1, _T2>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0, from /usr/include/c++/7/bits/char_traits.h:39, from /usr/include/c++/7/ios:40, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/stl_iterator.h:299:5: note: candidate: template<class _Iterator> bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&) operator==(const reverse_iterator<_Iterator>& __x, ^~~~~~~~ /usr/include/c++/7/bits/stl_iterator.h:299:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::reverse_iterator<_Iterator>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0, from /usr/include/c++/7/bits/char_traits.h:39, from /usr/include/c++/7/ios:40, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/stl_iterator.h:337:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&) operator==(const reverse_iterator<_IteratorL>& __x, ^~~~~~~~ /usr/include/c++/7/bits/stl_iterator.h:337:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::reverse_iterator<_Iterator>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0, from /usr/include/c++/7/bits/char_traits.h:39, from /usr/include/c++/7/ios:40, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/stl_iterator.h:1118:5: note: candidate: template<class _IteratorL, class _IteratorR> bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&) operator==(const move_iterator<_IteratorL>& __x, ^~~~~~~~ /usr/include/c++/7/bits/stl_iterator.h:1118:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::move_iterator<_IteratorL>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0, from /usr/include/c++/7/bits/char_traits.h:39, from /usr/include/c++/7/ios:40, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/stl_iterator.h:1124:5: note: candidate: template<class _Iterator> bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&) operator==(const move_iterator<_Iterator>& __x, ^~~~~~~~ /usr/include/c++/7/bits/stl_iterator.h:1124:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::move_iterator<_IteratorL>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/string:41:0, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/allocator.h:146:5: note: candidate: template<class _T1, class _T2> bool std::operator==(const std::allocator<_CharT>&, const std::allocator<_T2>&) operator==(const allocator<_T1>&, const allocator<_T2>&) ^~~~~~~~ /usr/include/c++/7/bits/allocator.h:146:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::allocator<_CharT>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/string:41:0, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/allocator.h:152:5: note: candidate: template<class _Tp> bool std::operator==(const std::allocator<_CharT>&, const std::allocator<_CharT>&) operator==(const allocator<_Tp>&, const allocator<_Tp>&) ^~~~~~~~ /usr/include/c++/7/bits/allocator.h:152:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::allocator<_CharT>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/string:52:0, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/basic_string.h:5997:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/basic_string.h:5997:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/string:52:0, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/basic_string.h:6005:5: note: candidate: template<class _CharT> typename __gnu_cxx::__enable_if<std::__is_char<_Tp>::__value, bool>::__type std::operator==(const std::__cxx11::basic_string<_CharT>&, const std::__cxx11::basic_string<_CharT>&) operator==(const basic_string<_CharT>& __lhs, ^~~~~~~~ /usr/include/c++/7/bits/basic_string.h:6005:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: 'std::map<char, int>' is not derived from 'const std::__cxx11::basic_string<_CharT>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/string:52:0, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/basic_string.h:6019:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const _CharT*, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) operator==(const _CharT* __lhs, ^~~~~~~~ /usr/include/c++/7/bits/basic_string.h:6019:5: note: template argument deduction/substitution failed: vjestica.cpp:30:30: note: mismatched types 'const _CharT*' and 'std::map<char, int>' if (diff == cnt[i]) mask -= (1<<i); ^ In file included from /usr/include/c++/7/string:52:0, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/istream:38, from /usr/include/c++/7/sstream:38, from /usr/include/c++/7/complex:45, from /usr/include/c++/7/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52, from vjestica.cpp:9: /usr/include/c++/7/bits/basic_st