Submission #793208

# Submission time Handle Problem Language Result Execution time Memory
793208 2023-07-25T15:57:14 Z pasin30055 Cop and Robber (BOI14_coprobber) C++14
Compilation error
0 ms 0 KB
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

static unsigned middle_of(bool **A, unsigned N)
{
  // Minimize maximum distance from any intersection.
  return N / 2; // Assuming the intersections are numbered in order.
}

static bool **connected;
static unsigned intersect_num;
static unsigned cop;

int start(unsigned N, bool **A)
{
  if (max_cycle_len(A, N) > 3) return -1;

  const size_t cnct_size = N * N * sizeof(bool);
  connected = malloc(cnct_size);
  assert(connected);
  memcpy(connected, A, cnct_size);

  intersect_num = N;

  return cop = middle_of(A, N);
}

static unsigned intersect_dist(unsigned a, unsigned b, unsigned *visited, unsigned cur_dist)
{
  if (a == b) return 0;
  visited[cur_dist++] = a;
  unsigned min;
  for (unsigned i = 0; i < intersect_num; ++i) {
    if (connected[a][i] && (!in_arr(visited, i))) 
  }






}

static void move_cop(unsigned robber, unsigned target_dist)
{
  for (unsigned i = 0; i < intersect_num; ++i) {
    if (intersect_dist(i, robber) == target_dist) {
      cop = i;
      break;
    }
  }
}

unsigned nextMove(unsigned R)
{
  const unsigned d = cop_robber_dist(R);
  if (d) move_cop(R, d - 1);
  if (d < 2 && connected) {
    free(connected);
    connected = NULL;
  }
  return cop;
}

int main(void)
{
  // How the functions are used.
  
  unsigned N = getN();
  bool **A = getA();
  
  int C = start(N, A);
  if (C == -1) return 1;

  unsigned R;
  do {
    R = getR(N, A, C);
    C = next_move(R);
  } while (C != R);
    
  return 0;
}

Compilation message

coprobber.cpp: In function 'int start(unsigned int, bool**)':
coprobber.cpp:18:7: error: 'max_cycle_len' was not declared in this scope
   18 |   if (max_cycle_len(A, N) > 3) return -1;
      |       ^~~~~~~~~~~~~
coprobber.cpp:21:21: error: invalid conversion from 'void*' to 'bool**' [-fpermissive]
   21 |   connected = malloc(cnct_size);
      |               ~~~~~~^~~~~~~~~~~
      |                     |
      |                     void*
coprobber.cpp: In function 'unsigned int intersect_dist(unsigned int, unsigned int, unsigned int*, unsigned int)':
coprobber.cpp:36:30: error: 'in_arr' was not declared in this scope
   36 |     if (connected[a][i] && (!in_arr(visited, i)))
      |                              ^~~~~~
coprobber.cpp:37:3: error: expected primary-expression before '}' token
   37 |   }
      |   ^
coprobber.cpp:34:12: warning: unused variable 'min' [-Wunused-variable]
   34 |   unsigned min;
      |            ^~~
coprobber.cpp: In function 'void move_cop(unsigned int, unsigned int)':
coprobber.cpp:49:33: error: too few arguments to function 'unsigned int intersect_dist(unsigned int, unsigned int, unsigned int*, unsigned int)'
   49 |     if (intersect_dist(i, robber) == target_dist) {
      |                                 ^
coprobber.cpp:30:17: note: declared here
   30 | static unsigned intersect_dist(unsigned a, unsigned b, unsigned *visited, unsigned cur_dist)
      |                 ^~~~~~~~~~~~~~
coprobber.cpp: In function 'unsigned int nextMove(unsigned int)':
coprobber.cpp:58:22: error: 'cop_robber_dist' was not declared in this scope
   58 |   const unsigned d = cop_robber_dist(R);
      |                      ^~~~~~~~~~~~~~~
coprobber.cpp: In function 'int main()':
coprobber.cpp:71:16: error: 'getN' was not declared in this scope; did you mean 'getw'?
   71 |   unsigned N = getN();
      |                ^~~~
      |                getw
coprobber.cpp:72:14: error: 'getA' was not declared in this scope; did you mean 'getw'?
   72 |   bool **A = getA();
      |              ^~~~
      |              getw
coprobber.cpp:79:9: error: 'getR' was not declared in this scope; did you mean 'getw'?
   79 |     R = getR(N, A, C);
      |         ^~~~
      |         getw
coprobber.cpp:80:9: error: 'next_move' was not declared in this scope; did you mean 'nextMove'?
   80 |     C = next_move(R);
      |         ^~~~~~~~~
      |         nextMove
coprobber.cpp:81:14: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
   81 |   } while (C != R);
      |            ~~^~~~