# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
735960 | GusterGoose27 | 즐거운 행로 (APIO20_fun) | C++17 | 컴파일 에러 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "fun.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
const int MAXN = 1e5;
int cent_dist[MAXN];
priority_queue<pii> bucket[3];
bool used[MAXN];
vector<int> ans;
int get_mx() {
int bst = 0;
for (int i = 1; i < 2; i++) {
if (bucket[i].size() > bucket[bst].size()) bst = i;
}
return bst;
}
void add(int i) {
ans.push_back(bucket[i].top().second);
bucket[i].pop();
}
vector<int> createFunTour(int n, int q) {
if (n == 2) {
vector<int> v(2);
v[0] = 0; v[1] = 1;
return v;
}
int cent = 0;
int sz = n;
for (int i = 1; i < n; i++) {
int cur = attractionsBehind(0, i);
if (cur < sz && cur >= (n+1)/2) {
sz = cur;
cent = i;
}
}
vector<int> adj;
for (int i = 0; i < n; i++) {
if (i == cent) {
cent_dist[i] = 0;
continue;
}
cent_dist[i] = hoursRequired(i, cent);
if (cent_dist[i] == 1) adj.push_back(i);
}
used[cent] = 1;
assert(adj.size() >= 2);
for (int i = 0; i < 2; i++) {
bucket[i].push(pii(1, adj[i]));
for (int j = 0; j < n; j++) {
if (cent_dist[j] < 2) continue;
int d = hoursRequired(j, adj[i]);
if (d == cent_dist[j]-1) {
bucket[i].push(pii(cent_dist[j], j));
used[j] = 1;
}
}
}
for (int i = 0; i < n; i++) if (!used[i]) bucket[2].push(pii(cent_dist[i], i));
int p = -1;
for (int i = 0; i < n-1; i++) {
int mx = get_mx();
if (2*bucket[mx].size() == n-i) {
assert(p != mx);
add(mx);
p = mx;
}
else {
int v = -1;
for (int j = 0; j < 3; j++) {
if (j == p) continue;
if (v == -1 || bucket[j].top() > bucket[v].top()) v = j;
}
add(v);
p = v;
}
}
ans.push_back(cent);
bucket[cent] = -1;
p = n;
for (int i = 0; i < n-1; i++) {
// assert(cent_dist[ans[i]]+cent_dist[ans[i+1]] <= p);
p = cent_dist[ans[i]]+cent_dist[ans[i+1]];
assert(bucket[ans[i]] != bucket[ans[i+1]]);
}
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
fun.cpp: In function 'std::vector<int> createFunTour(int, int)': fun.cpp:69:33: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare] 69 | if (2*bucket[mx].size() == n-i) { | ~~~~~~~~~~~~~~~~~~~~^~~~~~ fun.cpp:85:21: error: no match for 'operator=' (operand types are 'std::priority_queue<std::pair<int, int> >' and 'int') 85 | bucket[cent] = -1; | ^ In file included from /usr/include/c++/10/queue:64, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86, from fun.cpp:3: /usr/include/c++/10/bits/stl_queue.h:456:11: note: candidate: 'std::priority_queue<std::pair<int, int> >& std::priority_queue<std::pair<int, int> >::operator=(const std::priority_queue<std::pair<int, int> >&)' 456 | class priority_queue | ^~~~~~~~~~~~~~ /usr/include/c++/10/bits/stl_queue.h:456:11: note: no known conversion for argument 1 from 'int' to 'const std::priority_queue<std::pair<int, int> >&' /usr/include/c++/10/bits/stl_queue.h:456:11: note: candidate: 'std::priority_queue<std::pair<int, int> >& std::priority_queue<std::pair<int, int> >::operator=(std::priority_queue<std::pair<int, int> >&&)' /usr/include/c++/10/bits/stl_queue.h:456:11: note: no known conversion for argument 1 from 'int' to 'std::priority_queue<std::pair<int, int> >&&' In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:31: error: no match for 'operator!=' (operand types are 'std::priority_queue<std::pair<int, int> >' and 'std::priority_queue<std::pair<int, int> >') 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~~~~~ | | | | | priority_queue<[...]> | priority_queue<[...]> In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1064:5: note: candidate: 'template<class _BiIter> bool std::__cxx11::operator!=(const std::__cxx11::sub_match<_BiIter>&, const std::__cxx11::sub_match<_BiIter>&)' 1064 | operator!=(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1064:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1144: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>&)' 1144 | operator!=(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1144:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1237: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>&)' 1237 | operator!=(const sub_match<_Bi_iter>& __lhs, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1237:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1311: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>&)' 1311 | operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1311:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1405: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*)' 1405 | operator!=(const sub_match<_Bi_iter>& __lhs, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1405:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1479: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>&)' 1479 | operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1479:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:1579: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&)' 1579 | operator!=(const sub_match<_Bi_iter>& __lhs, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:1579:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/regex:62, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:110, from fun.cpp:3: /usr/include/c++/10/bits/regex.h:2126: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>&)' 2126 | operator!=(const match_results<_Bi_iter, _Alloc>& __m1, | ^~~~~~~~ /usr/include/c++/10/bits/regex.h:2126:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::__cxx11::match_results<_BiIter, _Alloc>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/bits/stl_algobase.h:64, from /usr/include/c++/10/vector:60, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/stl_pair.h:496:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator!=(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)' 496 | operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | ^~~~~~~~ /usr/include/c++/10/bits/stl_pair.h:496:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::pair<_T1, _T2>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/bits/stl_algobase.h:67, from /usr/include/c++/10/vector:60, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/stl_iterator.h:372:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator!=(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)' 372 | operator!=(const reverse_iterator<_Iterator>& __x, | ^~~~~~~~ /usr/include/c++/10/bits/stl_iterator.h:372:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::reverse_iterator<_Iterator>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/bits/stl_algobase.h:67, from /usr/include/c++/10/vector:60, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/stl_iterator.h:410:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator!=(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)' 410 | operator!=(const reverse_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/include/c++/10/bits/stl_iterator.h:410:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::reverse_iterator<_Iterator>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/bits/stl_algobase.h:67, from /usr/include/c++/10/vector:60, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/stl_iterator.h:1444:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator!=(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)' 1444 | operator!=(const move_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/include/c++/10/bits/stl_iterator.h:1444:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::move_iterator<_IteratorL>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/bits/stl_algobase.h:67, from /usr/include/c++/10/vector:60, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/stl_iterator.h:1501:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator!=(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)' 1501 | operator!=(const move_iterator<_Iterator>& __x, | ^~~~~~~~ /usr/include/c++/10/bits/stl_iterator.h:1501:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::move_iterator<_IteratorL>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/vector:64, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/allocator.h:213:5: note: candidate: 'template<class _T1, class _T2> bool std::operator!=(const std::allocator<_Tp1>&, const std::allocator<_T2>&)' 213 | operator!=(const allocator<_T1>&, const allocator<_T2>&) | ^~~~~~~~ /usr/include/c++/10/bits/allocator.h:213:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::allocator<_Tp1>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/vector:67, from fun.h:1, from fun.cpp:1: /usr/include/c++/10/bits/stl_vector.h:1937:5: note: candidate: 'template<class _Tp, class _Alloc> bool std::operator!=(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)' 1937 | operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) | ^~~~~~~~ /usr/include/c++/10/bits/stl_vector.h:1937:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::vector<_Tp, _Alloc>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file included from /usr/include/c++/10/iosfwd:40, from /usr/include/c++/10/ios:38, 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 fun.cpp:3: /usr/include/c++/10/bits/postypes.h:227:5: note: candidate: 'template<class _StateT> bool std::operator!=(const std::fpos<_StateT>&, const std::fpos<_StateT>&)' 227 | operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) | ^~~~~~~~ /usr/include/c++/10/bits/postypes.h:227:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/10/cassert:44, from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33, from fun.cpp:3: fun.cpp:90:49: note: 'std::priority_queue<std::pair<int, int> >' is not derived from 'const std::fpos<_StateT>' 90 | assert(bucket[ans[i]] != bucket[ans[i+1]]); | ^ In file