Submission #1186602

#TimeUsernameProblemLanguageResultExecution timeMemory
1186602versesrevGame (IOI14_game)C++20
Compilation error
0 ms0 KiB
#include <deque>
#include <vector>
#include <bitset>

constexpr int N = 1500;
int n{};
std::vector<std::bitset<N>> edges;
std::bitset<N> mask;
std::vector<int> degs;

void initialize(int _n) {
  n = _n;
  edges.assign(n, {});
  degs.assign(n, n);
  for (int i = 0; i < n; ++i) mask[i] = true;
  for (int i = 0; i < n; ++i) {
    edges[i] = ~edges[i] & mask;
  }
}

int hasEdge(int u, int v) {
  edges[u][v] = edges[v][u] = false;
  --degs[u], --degs[v];
  
  if (edges[v].count() > edges[u].count()) {
    std::swap(u, v);
  }
  
  int start = std::distance(degs.begin(), std::ranges::max_element(degs));
  
  std::bitset<N> not_visited = mask;
  std::bitset<N> new_vs, next_new_vs;
  new_vs = edges[start], not_visited &= ~edges[start];
  while ((not_visited[v] or not_visited[u]) and new_vs.any()) {
    next_new_vs.reset();
    for (int i = 0; i < n; ++i) {
      if (new_vs[i]) {
        next_new_vs |= edges[i];
      }
    }
    new_vs = next_new_vs & not_visited;
    not_visited &= ~new_vs;
  }
  
  if (not_visited[v] or not_visited[u]) {
    edges[u][v] = edges[v][u] = true;
    ++degs[u], ++degs[v];
  }
  
  return edges[u][v];
}

Compilation message (stderr)

game.cpp: In function 'int hasEdge(int, int)':
game.cpp:29:56: error: 'max_element' is not a member of 'std::ranges'; did you mean 'std::max_element'?
   29 |   int start = std::distance(degs.begin(), std::ranges::max_element(degs));
      |                                                        ^~~~~~~~~~~
In file included from /usr/include/c++/11/deque:62,
                 from game.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:5728:5: note: 'std::max_element' declared here
 5728 |     max_element(_ForwardIterator __first, _ForwardIterator __last,
      |     ^~~~~~~~~~~