Submission #758531

#TimeUsernameProblemLanguageResultExecution timeMemory
758531rainboyAlice, Bob, and Circuit (APIO23_abc)C++17
12 / 100
140 ms10040 KiB
#include "abc.h" const int L = 16; const int OP_INPUT = -1; const int OP_ZERO = 0; // f(OP_ZERO, x0, x1) = 0 const int OP_NOR = 1; // f(OP_NOR, x0, x1) = !(x0 || x1) const int OP_GREATER = 2; // f(OP_GREATER, x0, x1) = (x0 > x1) const int OP_NOT_X1 = 3; // f(OP_NOT_X1, x0, x1) = !x1 const int OP_LESS = 4; // f(OP_LESS, x0, x1) = (x0 < x1) const int OP_NOT_X0 = 5; // f(OP_NOT_X0, x0, x1) = !x0 const int OP_XOR = 6; // f(OP_XOR, x0, x1) = (x0 ^ x1) const int OP_NAND = 7; // f(OP_NAND, x0, x1) = !(x0 && x1) const int OP_AND = 8; // f(OP_AND, x0, x1) = (x0 && x1) const int OP_EQUAL = 9; // f(OP_EQUAL, x0, x1) = (x0 == x1) const int OP_X0 = 10; // f(OP_X0, x0, x1) = x0 const int OP_GEQ = 11; // f(OP_GEQ, x0, x1) = (x0 >= x1) const int OP_X1 = 12; // f(OP_X1, x0, x1) = x1 const int OP_LEQ = 13; // f(OP_LEQ, x0, x1) = (x0 <= x1) const int OP_OR = 14; // f(OP_OR, x0, x1) = (x0 || x1) const int OP_ONE = 15; // f(OP_ONE, x0, x1) = 1 #define OPS op, uu, l int alice(const int n, const char name[][5], const unsigned short xx[], bool aa[]) { for (int h = 0; h < L; h++) aa[h] = xx[0] >> h & 1; return L; } int bob(const int m, const char uu[][5], const char vv[][5], bool bb[]) { for (int h = 0; h < L; h++) bb[h] = m >> h & 1; return L; } int gate(int op[], int uu[][2], int &l, int o, int u, int v) { op[l] = o, uu[l][0] = u, uu[l][1] = v; return l++; } void add1(int op[], int uu[][2], int &l, int *cc, int u, int i) { for (int j = i; j < L; j++) { int c = gate(OPS, OP_XOR, cc[j], u), v = gate(OPS, OP_AND, cc[j], u); cc[j] = c, u = v; } } void mult(int op[], int uu[][2], int &l, int *aa, int *bb, int *cc) { for (int i = 0; i < L; i++) for (int j = 0; i + j < L; j++) add1(OPS, cc, gate(OPS, OP_AND, aa[i], bb[j]), i + j); } int circuit(const int la, const int lb, int op[], int uu[][2], int outputs_circuit[][16]) { int aa[L], bb[L], cc[L]; int l = 0; for (int h = 0; h < L * 2; h++) gate(OPS, OP_INPUT, -1, -1); for (int h = 0; h < L; h++) aa[h] = h, bb[h] = L + h; int ZERO = gate(OPS, OP_ZERO, 0, 0), ONE = gate(OPS, OP_ONE, 0, 0); for (int h = 0; h < L; h++) cc[h] = ZERO; mult(OPS, aa, bb, cc); int n = 1; for (int h = 0; h < L; h++) outputs_circuit[0][h] = cc[h]; return l; }

Compilation message (stderr)

abc.cpp: In function 'int circuit(int, int, int*, int (*)[2], int (*)[16])':
abc.cpp:61:39: warning: unused variable 'ONE' [-Wunused-variable]
   61 |  int ZERO = gate(OPS, OP_ZERO, 0, 0), ONE = gate(OPS, OP_ONE, 0, 0);
      |                                       ^~~
abc.cpp:65:6: warning: unused variable 'n' [-Wunused-variable]
   65 |  int n = 1;
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...