제출 #1315272

#제출 시각아이디문제언어결과실행 시간메모리
1315272PlayVoltzLongest Trip (IOI23_longesttrip)C++20
컴파일 에러
0 ms0 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define pii pair<int, int> #define fi first #define se second map<vector<int>, map<vector<int>, int> > mmm; int query(vector<int> a, vector<int> b){ if (!mmm[a][b]&&!mmm[b][a])mmm[b][a]=mmm[a][b]=are_connected(a, b)+1; return mmm[a][b]-1; } int query(deque<int> aa, deque<int> bb){ vector<int> a, b; for (auto c:aa)a.pb(c); for (auto c:bb)b.pb(c); if (!mmm[a][b]&&!mmm[b][a])mmm[b][a]=mmm[a][b]=are_connected(a, b)+1; return mmm[a][b]-1; } vector<int> longest_trip(int n, int d){ mmm.clear(); if (d==3){ vector<int> ans; for (int i=0; i<n; ++i)ans.pb(i); return ans; } if (d==2){ deque<int> ans(1, 0); int done=1; if (are_connected({0}, {1}))ans.pb(1); else ans.pb(2), done=2; for (int i=1; i<n; ++i)if (i!=done){ if (are_connected({i}, {ans.back()}))ans.pb(i); else ans.push_front(i); } vector<int> res; for (auto a:ans)res.pb(a); return res; } int aa=-1, bb=-1, cc=-1; for (int i=0; i<n; ++i){ int ooga=-1; for (int j=0; j<n; ++j){ if (ooga==-1&&i!=j&&query({i}, {j}))ooga=j; else if (ooga!=-1&&i!=j&&query({i}, {j})){ aa=i, bb=ooga, cc=j; break; } } } deque<int> a(1, bb); for (int i=0; i<n; ++i)if (i!=aa&&i!=bb&&i!=cc){ if (query({i}, {a.back()}))a.pb(i); else if (query({i}, {b.back()}))b.pb(i); else{ while (b.size())a.pb(b.back()), b.pop_back(); b.pb(i); } } if (query({i}, {a.back()}))a.pb(i); else if (query({i}, {b.back()}))b.pb(i); else{ while (b.size())a.pb(b.back()), b.pop_back(); b.pb(i); } if (b.size()>a.size())swap(a, b); if (query({a.back()}, {b.back()})){ while (b.size())a.pb(b.back()), b.pop_back(); } else if (query({a.back()}, {b[0]})){ for (auto c:b)a.pb(c); } else if (query({a[0]}, {b.back()})){ while (b.size())a.push_front(b.back()), b.pop_back(); } else if (query({a[0]}, {b[0]})){ for (auto c:b)a.push_front(c); } else{ for (int i=1; j<b.size()-1; ++i)if (query({b[j]}, {a[0], a.back()})){ if (query({b[j]}, {a.back()}))for (int j=0; j<b.size(); ++j)a.pb(b[(i+j)%b.size()]); else for (int j=0; j<b.size(); ++j)a.push_front(b[(i+j)%b.size()]); } } vector<int> res; for (auto c:a)res.pb(c); return res; }

컴파일 시 표준 에러 (stderr) 메시지

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:50:50: error: call of overloaded 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)' is ambiguous
   50 |                         if (ooga==-1&&i!=j&&query({i}, {j}))ooga=j;
      |                                             ~~~~~^~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:51:55: error: call of overloaded 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)' is ambiguous
   51 |                         else if (ooga!=-1&&i!=j&&query({i}, {j})){
      |                                                  ~~~~~^~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:59:26: error: call of overloaded 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)' is ambiguous
   59 |                 if (query({i}, {a.back()}))a.pb(i);
      |                     ~~~~~^~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:60:38: error: 'b' was not declared in this scope
   60 |                 else if (query({i}, {b.back()}))b.pb(i);
      |                                      ^
longesttrip.cpp:60:31: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   60 |                 else if (query({i}, {b.back()}))b.pb(i);
      |                          ~~~~~^~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:38: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |                          ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:37: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |                          ~~~~~~~~~~~^~
longesttrip.cpp:66:20: error: 'i' was not declared in this scope
   66 |         if (query({i}, {a.back()}))a.pb(i);
      |                    ^
longesttrip.cpp:66:18: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   66 |         if (query({i}, {a.back()}))a.pb(i);
      |             ~~~~~^~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:23: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |           ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:22: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |           ~~~~~~~~~~~^~
longesttrip.cpp:67:30: error: 'b' was not declared in this scope
   67 |         else if (query({i}, {b.back()}))b.pb(i);
      |                              ^
longesttrip.cpp:67:23: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   67 |         else if (query({i}, {b.back()}))b.pb(i);
      |                  ~~~~~^~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:23: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |           ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:22: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |           ~~~~~~~~~~~^~
longesttrip.cpp:72:13: error: 'b' was not declared in this scope
   72 |         if (b.size()>a.size())swap(a, b);
      |             ^
longesttrip.cpp:73:32: error: 'b' was not declared in this scope
   73 |         if (query({a.back()}, {b.back()})){
      |                                ^
longesttrip.cpp:73:18: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   73 |         if (query({a.back()}, {b.back()})){
      |             ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:38: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |                          ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:37: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |                          ~~~~~~~~~~~^~
longesttrip.cpp:76:23: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   76 |         else if (query({a.back()}, {b[0]})){
      |                  ~~~~~^~~~~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:38: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |                          ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:37: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |                          ~~~~~~~~~~~^~
longesttrip.cpp:79:23: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   79 |         else if (query({a[0]}, {b.back()})){
      |                  ~~~~~^~~~~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:38: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |                          ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:37: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |                          ~~~~~~~~~~~^~
longesttrip.cpp:82:23: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   82 |         else if (query({a[0]}, {b[0]})){
      |                  ~~~~~^~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:38: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |                          ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:37: note:   no known conversion for argument 2 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |                          ~~~~~~~~~~~^~
longesttrip.cpp:86:31: error: 'j' was not declared in this scope
   86 |                 for (int i=1; j<b.size()-1; ++i)if (query({b[j]}, {a[0], a.back()})){
      |                               ^
longesttrip.cpp:86:58: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   86 |                 for (int i=1; j<b.size()-1; ++i)if (query({b[j]}, {a[0], a.back()})){
      |                                                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:23: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |           ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:22: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |           ~~~~~~~~~~~^~
longesttrip.cpp:87:34: error: no matching function for call to 'query(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
   87 |                         if (query({b[j]}, {a.back()}))for (int j=0; j<b.size(); ++j)a.pb(b[(i+j)%b.size()]);
      |                             ~~~~~^~~~~~~~~~~~~~~~~~~~
longesttrip.cpp:13:5: note: candidate: 'int query(std::vector<int>, std::vector<int>)'
   13 | int query(vector<int> a, vector<int> b){
      |     ^~~~~
longesttrip.cpp:13:23: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::vector<int>'
   13 | int query(vector<int> a, vector<int> b){
      |           ~~~~~~~~~~~~^
longesttrip.cpp:18:5: note: candidate: 'int query(std::deque<int>, std::deque<int>)'
   18 | int query(deque<int> aa, deque<int> bb){
      |     ^~~~~
longesttrip.cpp:18:22: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::deque<int>'
   18 | int query(deque<int> aa, deque<int> bb){
      |           ~~~~~~~~~~~^~