Question
Pista 1
Asociamos un subconjunto a cada de modo que si recibe un par , debe responder sí sii (y no en caso contrario).
Pista 2
Debe suceder que . En otras palabras, no existe ningún par con tal que contenga a .
Pista 3
El número 920 parece extrañamente específico. ¿Se relaciona de algún modo con 12?
Pista 4
Solución
Podemos simplemente asociar cada con un subconjunto distinto de tamaño 6.
#include "question.h"
using namespace std;
int sets[925][12];
void Init(int N) {
for (int i = 0, cnt = 1; i < (1 << 12); i++) {
if (__builtin_popcount(i) == 6) {
for (int j = 0; j < 12; j++)
if (i & (1 << j)) sets[cnt][j] = 1;
else sets[cnt][j] = 0;
cnt++;
}
}
}
int Alice(int x, int y) {
for (int i = 0; i < 12; i++)
if (sets[x][i] && !sets[y][i]) return i + 1;
}
int Bob(int q, int h) { return sets[q][h - 1]; }