제출 #726967

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

using namespace std;
using namespace __gnu_pbds;

typedef int64_t ll;
typedef string str;

#define ordered_set tree <int, null_type, less <int>, rb_tree_tag, tree_order_statistics_node_update>

ll count_swaps(vector <int> S) {
  int n = (int)S.size();
  ll ans = 0;
  for (int i = 0; i < n; ++i) {
    S[i] += n;
  }
  vector <deque <int>> pos(2 * n + 1);
  vector <bool> used(n, false);
  ordered_set st;
  for (int i = 0; i < n; ++i) {
    pos[S[i]].push_back(i);
  }
  for (int i = 0; i + 1 < n; ++i) {
    if (used[i]) {
      continue;
    }
    if (S[i] > n) {
      int left = S[i] - n - 2 * (S[i] - n) + n, right = S[i];
      int from = pos[left].front();
      ans += from - i;
      ans -= (int)st.order_of_key(from + 1) - (int)st.order_of_key(i);
      st.insert(i), st.insert(from);
      used[i] = true, used[from] = true;
      pos[left].pop_front(), pos[right].pop_front();
    } else {
      int left = S[i], right = S[i] - n - 2 * (S[i] - n) + n;
      int from = pos[right].front();
      ans += from - i - 1;
      ans -= (int)st.order_of_key(from + 1) - (int)st.order_of_key(i);
      st.insert(i), st.insert(from);
      used[i] = true, used[from] = true;
      pos[left].pop_front(), pos[right].pop_front();
    }
  }
  return ans;
}

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

shoes.cpp:14:4: error: ambiguating new declaration of 'll count_swaps(std::vector<int>)'
   14 | ll count_swaps(vector <int> S) {
      |    ^~~~~~~~~~~
In file included from shoes.cpp:1:
shoes.h:7:11: note: old declaration 'long long int count_swaps(std::vector<int>)'
    7 | long long count_swaps(std::vector<int> S);
      |           ^~~~~~~~~~~