Submission #1244555

#TimeUsernameProblemLanguageResultExecution timeMemory
1244555repmannICC (CEOI16_icc)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include “icc.h”
using namespace std;
mt19937 rng(1);
int D[101];
struct NODE
{
  int parent, num;
  vector <int> V;
}DSU[101];
//inline bool query(int size_a, int size_b, int a[], int b[])
//{
//  cout << "Query:\n";
//  cout << size_a << '\n';
//  for(int i = 0; i < size_a; i++) cout << a[i] << " \n"[i == (size_a - 1)];
//  cout << size_b << '\n';
//  for(int i = 0; i < size_b; i++) cout << b[i] << " \n"[i == (size_b - 1)];
//  bool ans;
//  cin >> ans;
//  return ans;
//}
//inline void setRoad(int u, int v)
//{
//  cout << "Set: " << u << ' ' << v << '\n';
//  return;
//}
inline int Find(int u)
{
  if(u != DSU[u].parent) return Find(DSU[u].parent);
  return u;
}
inline void Union(int u, int v)
{
  u = Find(u);
  v = Find(v);
  if(u == v) return;
  if(DSU[u].num < DSU[v].num) swap(u, v);
  DSU[v].parent = u;
  for(int x : DSU[v].V) DSU[u].V.push_back(x);
  DSU[v].V = vector <int>();
  return;
}
inline int BS(int size_a, int size_b, int a[], int b[])
{
  int L = 0, R = size_a - 1, S, temp[size_a];
  while(L <= R)
  {
    S = (L + R) >> 1;
    for(int i = L, j = 0; i <= S; i++) temp[j++] = a[i];
    if(!query(S - L + 1, size_b, temp, b)) L = S + 1;
    else {R = S - 1;}
  }
  return a[L];
}
void run(int N)
{
  for(int i = 1; i <= N; i++) DSU[i] = {i, 1, {i}};
  int edges = N - 1;
  while(edges--)
  {
    int num, u, v, a[N], b[N];
    do
    {
      memset(D, 0, sizeof(D));
      num = 0;
      while(num < (N >> 1))
      {
        int node = (rng() % N) + 1;
        node = Find(node);
        if(!D[node]) {D[node] = true; num += DSU[node].num;}
      }
      for(int i = 1, j = 0; i <= N; i++)
      {
        if(!D[i]) continue;
        for(int x : DSU[i].V) {a[j++] = x; D[x] = 1;}
      }
      for(int i = 1, j = 0; i <= N; i++) if(!D[i]) b[j++] = i;
    }while(!query(num, N - num, a, b));
    a[0] = u = BS(num, N - num, a, b);
    v = BS(N - num, 1, b, a);
    Union(u, v);
    setRoad(u, v);
  }
  return;
}
//int main()
//{
//  int n;
//  cin >> n;
//  run(n);
//
//  return 0;
//}

Compilation message (stderr)

icc.cpp:2:10: error: extended character “ is not valid in an identifier
    2 | #include “icc.h”
      |          ^
icc.cpp:2:10: error: #include expects "FILENAME" or <FILENAME>
    2 | #include “icc.h”
      |          ^~~~
icc.cpp:2:15: error: extended character ” is not valid in an identifier
    2 | #include “icc.h”
      |               ^
icc.cpp: In function 'int BS(int, int, int*, int*)':
icc.cpp:50:9: error: 'query' was not declared in this scope
   50 |     if(!query(S - L + 1, size_b, temp, b)) L = S + 1;
      |         ^~~~~
icc.cpp: In function 'void run(int)':
icc.cpp:78:13: error: 'query' was not declared in this scope
   78 |     }while(!query(num, N - num, a, b));
      |             ^~~~~
icc.cpp:82:5: error: 'setRoad' was not declared in this scope
   82 |     setRoad(u, v);
      |     ^~~~~~~