제출 #315149

#제출 시각아이디문제언어결과실행 시간메모리
315149SeanliuCat (info1cup19_cat)C++17
컴파일 에러
0 ms0 KiB
#include <iostream> #include <vector> #include <utility> #define pii pair<int,int> #define F first #define S second #define ericxiao ios_base::sync_with_stdio(0);cin.tie(0); #define endl '\n' using namespace std; const int maxN = 3e6 + 326; int N, arr[maxN], pos[maxN], T, posc, ansc; pii ans[maxN]; bool vis[maxN]; inline void makeMove(int i, int j){ swap(arr[i], arr[j]); swap(arr[N - i + 1], arr[N - j + 1]); } inline void disp(){ for(int i = 1; i <= N; i++) cout << arr[i] << " \n"[i == N]; } inline char readchar() { static const size_t bufsize = 65536; static char buf[bufsize]; static char *p = buf, *end = buf; if (p == end) end = buf + fread_unlocked(buf, 1, bufsize, stdin), p = buf; return *p++; } inline void const Read(int & p) { p = 0; int tmp = 0; char c = readchar(); tmp = !(c^'-'); while (c < '0' || c > '9') { c = readchar(); } while (c >= '0' && c <= '9') p = (p<<3)+(p<<1)+(c^48), c = readchar(); p = tmp?-p:p; } inline void solve(){ Read(N); for(int i = 1; i <= N; i++) Read(arr[i]); for(int i = 1; i <= N / 2; i++) if(arr[i] + arr[N - i + 1] != N + 1){ cout << -1 << endl; return; } posc = ansc = 0; for(int i = 1; i <= N / 2; i++) if(arr[i] > N / 2){ if(arr[arr[i]] <= N / 2 && ((arr[arr[i]] + arr[i]) != (N + 1))){ ans[ansc++] = {i, ans[i]}; makeMove(i, ans[i]); } else pos[posc++] = i; } if(posc & 1){ //not sure about this cout << -1 << endl; return; } /* cout << "have: "; for(int x : pos) cout << x << " "; cout << endl; */ for(int i = 0; i < posc; i += 2){ makeMove(pos[i], N - pos[i + 1] + 1); ans[ansc++] = {pos[i], N - pos[i + 1] + 1}; } //disp(); fill(vis, vis + N + 1, false); for(int i = 1; i <= N / 2; i++){ while(i != arr[i]){ int nxt = arr[i]; makeMove(i, arr[i]); ans[ansc++] = {i, nxt}; //disp(); } } cout << ansc << " " << ansc << endl; for(int i = 0; i < ansc; i++) cout << ans[i].F << " " << ans[i].S << endl; } int main(){ //ericxiao // Read(T); while(T--){ solve(); } }

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

cat.cpp: In function 'void solve()':
cat.cpp:57:28: error: no match for 'operator=' (operand types are 'std::pair<int, int>' and '<brace-enclosed initializer list>')
   57 |    ans[ansc++] = {i, ans[i]};
      |                            ^
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
                 from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/ios:40,
                 from /usr/include/c++/9/ostream:38,
                 from /usr/include/c++/9/iostream:39,
                 from cat.cpp:1:
/usr/include/c++/9/bits/stl_pair.h:378:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch_no_braces&>::type) [with _T1 = int; _T2 = int; typename std::conditional<std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value, const std::pair<_T1, _T2>&, const std::__nonesuch_no_braces&>::type = const std::pair<int, int>&]'
  378 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:381:51: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::conditional<true, const std::pair<int, int>&, const std::__nonesuch_no_braces&>::type' {aka 'const std::pair<int, int>&'}
  378 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~              
  379 |   __and_<is_copy_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
  380 |          is_copy_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
  381 |   const pair&, const __nonesuch_no_braces&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_pair.h:389:7: note: candidate: 'std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch_no_braces&&>::type) [with _T1 = int; _T2 = int; typename std::conditional<std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value, std::pair<_T1, _T2>&&, std::__nonesuch_no_braces&&>::type = std::pair<int, int>&&]'
  389 |       operator=(typename conditional<
      |       ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:392:41: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::conditional<true, std::pair<int, int>&&, std::__nonesuch_no_braces&&>::type' {aka 'std::pair<int, int>&&'}
  389 |       operator=(typename conditional<
      |                 ~~~~~~~~~~~~~~~~~~~~~    
  390 |   __and_<is_move_assignable<_T1>,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  391 |          is_move_assignable<_T2>>::value,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  392 |   pair&&, __nonesuch_no_braces&&>::type __p)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_pair.h:405:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, const _U1&>, std::is_assignable<_T2&, const _U2&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(const std::pair<_U1, _U2>&) [with _U1 = _U1; _U2 = _U2; _T1 = int; _T2 = int]'
  405 |  operator=(const pair<_U1, _U2>& __p)
      |  ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:405:2: note:   template argument deduction/substitution failed:
cat.cpp:57:28: note:   couldn't deduce template parameter '_U1'
   57 |    ans[ansc++] = {i, ans[i]};
      |                            ^
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
                 from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/ios:40,
                 from /usr/include/c++/9/ostream:38,
                 from /usr/include/c++/9/iostream:39,
                 from cat.cpp:1:
/usr/include/c++/9/bits/stl_pair.h:416:2: note: candidate: 'template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, _U1&&>, std::is_assignable<_T2&, _U2&&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(std::pair<_U1, _U2>&&) [with _U1 = _U1; _U2 = _U2; _T1 = int; _T2 = int]'
  416 |  operator=(pair<_U1, _U2>&& __p)
      |  ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:416:2: note:   template argument deduction/substitution failed:
cat.cpp:57:28: note:   couldn't deduce template parameter '_U1'
   57 |    ans[ansc++] = {i, ans[i]};
      |                            ^
cat.cpp:58:21: error: cannot convert 'std::pair<int, int>' to 'int'
   58 |    makeMove(i, ans[i]);
      |                ~~~~~^
      |                     |
      |                     std::pair<int, int>
cat.cpp:17:33: note:   initializing argument 2 of 'void makeMove(int, int)'
   17 | inline void makeMove(int i, int j){
      |                             ~~~~^