제출 #530845

#제출 시각아이디문제언어결과실행 시간메모리
530845M1v1savvaArranging Shoes (IOI19_shoes)C++17
컴파일 에러
0 ms0 KiB
#include "shoes.h"
#include <bits/stdc++.h>

#define sz(x) (int)(x).size()
#define forn(i, x) for (int i = 0; i < (int)x; i++)
#define pb push_back
#define rforn(i, x) for (int i = (int)x - 1; i >= 0; i--)
#define pii pair<int, int>
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define ff first
#define ss second

using namespace std;

template<class T>
void print(T a) {
    for (auto x : a)
        cout << x << ' ';
    cout << endl;
}

//signed main() {
    //freopen("test.txt", "r", stdin);

    // int n;
    // cin >> n;
    // vector<int> a(n * 2);
    // forn (i, n * 2)
    // 	cin >> a[i];
long long count_swaps(int S[]) {
	vector<int> a;
	int n = distance(begin(S), end(S)) / 2;
	forn (i, 2 * n)
		a.pb(S[i]);

    map<int, int> scores;
    map<int, int> prev;

    long long ans = 0;
    forn (i, 2 * n) {
    	int val = a[i];
    	scores[abs(val)]++;

		if (scores[abs(val)] % 2 == 0) {
			ans += i - prev[abs(val)];
			if (val > 0)
				ans--;
		} else {
			prev[abs(val)] = i;
		}
    }
    return ans;
    //cout << ans << '\n';

    //return 0;
}

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

shoes.cpp: In function 'long long int count_swaps(int*)':
shoes.cpp:33:26: error: no matching function for call to 'begin(int*&)'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                          ^
In file included from /usr/include/c++/10/bits/stl_vector.h:63,
                 from /usr/include/c++/10/vector:67,
                 from shoes.h:5,
                 from shoes.cpp:1:
/usr/include/c++/10/initializer_list:90:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)'
   90 |     begin(initializer_list<_Tp> __ils) noexcept
      |     ^~~~~
/usr/include/c++/10/initializer_list:90:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:26: note:   mismatched types 'std::initializer_list<_Tp>' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                          ^
In file included from /usr/include/c++/10/vector:69,
                 from shoes.h:5,
                 from shoes.cpp:1:
/usr/include/c++/10/bits/range_access.h:51:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(_Container&)'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:51:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(_Container&) [with _Container = int*]':
shoes.cpp:33:26:   required from here
/usr/include/c++/10/bits/range_access.h:51:50: error: request for member 'begin' in '__cont', which is of non-class type 'int*'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |                                           ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(const _Container&)'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(const _Container&) [with _Container = int*]':
shoes.cpp:33:26:   required from here
/usr/include/c++/10/bits/range_access.h:61:56: error: request for member 'begin' in '__cont', which is of non-class type 'int* const'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |                                                 ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::begin(_Tp (&)[_Nm])'
   90 |     begin(_Tp (&__arr)[_Nm])
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:26: note:   mismatched types '_Tp [_Nm]' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                          ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from shoes.cpp:2:
/usr/include/c++/10/valarray:1214:5: note: candidate: 'template<class _Tp> _Tp* std::begin(std::valarray<_Tp>&)'
 1214 |     begin(valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1214:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:26: note:   mismatched types 'std::valarray<_Tp>' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                          ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from shoes.cpp:2:
/usr/include/c++/10/valarray:1224:5: note: candidate: 'template<class _Tp> const _Tp* std::begin(const std::valarray<_Tp>&)'
 1224 |     begin(const valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1224:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:26: note:   mismatched types 'const std::valarray<_Tp>' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                          ^
shoes.cpp:33:34: error: no matching function for call to 'end(int*&)'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                                  ^
In file included from /usr/include/c++/10/bits/stl_vector.h:63,
                 from /usr/include/c++/10/vector:67,
                 from shoes.h:5,
                 from shoes.cpp:1:
/usr/include/c++/10/initializer_list:101:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)'
  101 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
/usr/include/c++/10/initializer_list:101:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:34: note:   mismatched types 'std::initializer_list<_Tp>' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                                  ^
In file included from /usr/include/c++/10/vector:69,
                 from shoes.h:5,
                 from shoes.cpp:1:
/usr/include/c++/10/bits/range_access.h:71:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&)'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:71:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&) [with _Container = int*]':
shoes.cpp:33:34:   required from here
/usr/include/c++/10/bits/range_access.h:71:48: error: request for member 'end' in '__cont', which is of non-class type 'int*'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |                                         ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:81:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&)'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:81:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&) [with _Container = int*]':
shoes.cpp:33:34:   required from here
/usr/include/c++/10/bits/range_access.h:81:54: error: request for member 'end' in '__cont', which is of non-class type 'int* const'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |                                               ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:100:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])'
  100 |     end(_Tp (&__arr)[_Nm])
      |     ^~~
/usr/include/c++/10/bits/range_access.h:100:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:34: note:   mismatched types '_Tp [_Nm]' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                                  ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from shoes.cpp:2:
/usr/include/c++/10/valarray:1234:5: note: candidate: 'template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)'
 1234 |     end(valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1234:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:34: note:   mismatched types 'std::valarray<_Tp>' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                                  ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from shoes.cpp:2:
/usr/include/c++/10/valarray:1244:5: note: candidate: 'template<class _Tp> const _Tp* std::end(const std::valarray<_Tp>&)'
 1244 |     end(const valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1244:5: note:   template argument deduction/substitution failed:
shoes.cpp:33:34: note:   mismatched types 'const std::valarray<_Tp>' and 'int*'
   33 |  int n = distance(begin(S), end(S)) / 2;
      |                                  ^