제출 #310821

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

using namespace std;

const int N = 1e5 + 1;

vector<int> fenw(N, 0);
vector<vector<int>> left(N), right(N);
set<int> s;

void Add(int x, int val) {
  for (; x < N; x += x & -x) {
    fenw[x] += val;
  }
}

long long Get(int x) {
  long long res = 0;
  for (; x > 0; x -= x & -x) {
    res += fenw[x];
  }
  return res;
}

long long count_swaps(vector<int> a) {
  int n = (int) a.size();
  vector<int> b(n + 1);
  for (int i = 0; i < n; i++) {
    b[i + 1] = a[i];
    if (b[i + 1] < 0) {
      left[-b[i + 1]].push_back(i + 1);
    } else {
      right[b[i + 1]].push_back(i + 1);
    }
    s.insert(i + 1);
  }
  for (int i = 1; i <= n; i++) {
    Add(i, 1);
  }
  long long ans = 0;
  for (int i = 1; i <= n / 2; i++) {
    int p = *s.begin();
    if (b[p] > 0) {
      ans += Get(N) - Get(left[b[p].back()]) - 1;
      s.erase(p);
      s.erase(left[b[p].back()]);
      Add(p, -1);
      Add(left[b[p].back()], -1);
      right[b[p]].pop_back();
      left[b[p]].pop_back();
    } else {
      ans += Get(N) - Get(right[-b[p].back()]) - 1;
      s.erase(p);
      s.erase(right[-b[p].back()]);
      Add(p, -1);
      Add(right[-b[p].back()], -1);
      right[-b[p]].pop_back();
      left[-b[p]].pop_back();
    }
  }
  return ans;
}

/*int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  cout << count_swaps(a) << '\n';
  return 0;
}*/

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

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:32:7: error: reference to 'left' is ambiguous
   32 |       left[-b[i + 1]].push_back(i + 1);
      |       ^~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1006:3: note: candidates are: 'std::ios_base& std::left(std::ios_base&)'
 1006 |   left(ios_base& __base)
      |   ^~~~
shoes.cpp:9:21: note:                 'std::vector<std::vector<int> > left'
    9 | vector<vector<int>> left(N), right(N);
      |                     ^~~~
shoes.cpp:34:7: error: reference to 'right' is ambiguous
   34 |       right[b[i + 1]].push_back(i + 1);
      |       ^~~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1014:3: note: candidates are: 'std::ios_base& std::right(std::ios_base&)'
 1014 |   right(ios_base& __base)
      |   ^~~~~
shoes.cpp:9:30: note:                 'std::vector<std::vector<int> > right'
    9 | vector<vector<int>> left(N), right(N);
      |                              ^~~~~
shoes.cpp:45:27: error: reference to 'left' is ambiguous
   45 |       ans += Get(N) - Get(left[b[p].back()]) - 1;
      |                           ^~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1006:3: note: candidates are: 'std::ios_base& std::left(std::ios_base&)'
 1006 |   left(ios_base& __base)
      |   ^~~~
shoes.cpp:9:21: note:                 'std::vector<std::vector<int> > left'
    9 | vector<vector<int>> left(N), right(N);
      |                     ^~~~
shoes.cpp:45:37: error: request for member 'back' in 'b.std::vector<int>::operator[](((std::vector<int>::size_type)p))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   45 |       ans += Get(N) - Get(left[b[p].back()]) - 1;
      |                                     ^~~~
shoes.cpp:47:15: error: reference to 'left' is ambiguous
   47 |       s.erase(left[b[p].back()]);
      |               ^~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1006:3: note: candidates are: 'std::ios_base& std::left(std::ios_base&)'
 1006 |   left(ios_base& __base)
      |   ^~~~
shoes.cpp:9:21: note:                 'std::vector<std::vector<int> > left'
    9 | vector<vector<int>> left(N), right(N);
      |                     ^~~~
shoes.cpp:47:25: error: request for member 'back' in 'b.std::vector<int>::operator[](((std::vector<int>::size_type)p))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   47 |       s.erase(left[b[p].back()]);
      |                         ^~~~
shoes.cpp:49:11: error: reference to 'left' is ambiguous
   49 |       Add(left[b[p].back()], -1);
      |           ^~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1006:3: note: candidates are: 'std::ios_base& std::left(std::ios_base&)'
 1006 |   left(ios_base& __base)
      |   ^~~~
shoes.cpp:9:21: note:                 'std::vector<std::vector<int> > left'
    9 | vector<vector<int>> left(N), right(N);
      |                     ^~~~
shoes.cpp:49:21: error: request for member 'back' in 'b.std::vector<int>::operator[](((std::vector<int>::size_type)p))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   49 |       Add(left[b[p].back()], -1);
      |                     ^~~~
shoes.cpp:50:7: error: reference to 'right' is ambiguous
   50 |       right[b[p]].pop_back();
      |       ^~~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1014:3: note: candidates are: 'std::ios_base& std::right(std::ios_base&)'
 1014 |   right(ios_base& __base)
      |   ^~~~~
shoes.cpp:9:30: note:                 'std::vector<std::vector<int> > right'
    9 | vector<vector<int>> left(N), right(N);
      |                              ^~~~~
shoes.cpp:51:7: error: reference to 'left' is ambiguous
   51 |       left[b[p]].pop_back();
      |       ^~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1006:3: note: candidates are: 'std::ios_base& std::left(std::ios_base&)'
 1006 |   left(ios_base& __base)
      |   ^~~~
shoes.cpp:9:21: note:                 'std::vector<std::vector<int> > left'
    9 | vector<vector<int>> left(N), right(N);
      |                     ^~~~
shoes.cpp:53:27: error: reference to 'right' is ambiguous
   53 |       ans += Get(N) - Get(right[-b[p].back()]) - 1;
      |                           ^~~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1014:3: note: candidates are: 'std::ios_base& std::right(std::ios_base&)'
 1014 |   right(ios_base& __base)
      |   ^~~~~
shoes.cpp:9:30: note:                 'std::vector<std::vector<int> > right'
    9 | vector<vector<int>> left(N), right(N);
      |                              ^~~~~
shoes.cpp:53:39: error: request for member 'back' in 'b.std::vector<int>::operator[](((std::vector<int>::size_type)p))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   53 |       ans += Get(N) - Get(right[-b[p].back()]) - 1;
      |                                       ^~~~
shoes.cpp:55:15: error: reference to 'right' is ambiguous
   55 |       s.erase(right[-b[p].back()]);
      |               ^~~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1014:3: note: candidates are: 'std::ios_base& std::right(std::ios_base&)'
 1014 |   right(ios_base& __base)
      |   ^~~~~
shoes.cpp:9:30: note:                 'std::vector<std::vector<int> > right'
    9 | vector<vector<int>> left(N), right(N);
      |                              ^~~~~
shoes.cpp:55:27: error: request for member 'back' in 'b.std::vector<int>::operator[](((std::vector<int>::size_type)p))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   55 |       s.erase(right[-b[p].back()]);
      |                           ^~~~
shoes.cpp:57:11: error: reference to 'right' is ambiguous
   57 |       Add(right[-b[p].back()], -1);
      |           ^~~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1014:3: note: candidates are: 'std::ios_base& std::right(std::ios_base&)'
 1014 |   right(ios_base& __base)
      |   ^~~~~
shoes.cpp:9:30: note:                 'std::vector<std::vector<int> > right'
    9 | vector<vector<int>> left(N), right(N);
      |                              ^~~~~
shoes.cpp:57:23: error: request for member 'back' in 'b.std::vector<int>::operator[](((std::vector<int>::size_type)p))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   57 |       Add(right[-b[p].back()], -1);
      |                       ^~~~
shoes.cpp:58:7: error: reference to 'right' is ambiguous
   58 |       right[-b[p]].pop_back();
      |       ^~~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1014:3: note: candidates are: 'std::ios_base& std::right(std::ios_base&)'
 1014 |   right(ios_base& __base)
      |   ^~~~~
shoes.cpp:9:30: note:                 'std::vector<std::vector<int> > right'
    9 | vector<vector<int>> left(N), right(N);
      |                              ^~~~~
shoes.cpp:59:7: error: reference to 'left' is ambiguous
   59 |       left[-b[p]].pop_back();
      |       ^~~~
In file included from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from shoes.cpp:1:
/usr/include/c++/9/bits/ios_base.h:1006:3: note: candidates are: 'std::ios_base& std::left(std::ios_base&)'
 1006 |   left(ios_base& __base)
      |   ^~~~
shoes.cpp:9:21: note:                 'std::vector<std::vector<int> > left'
    9 | vector<vector<int>> left(N), right(N);
      |                     ^~~~