Submission #1206725

#TimeUsernameProblemLanguageResultExecution timeMemory
1206725simona1230Bit Shift Registers (IOI21_registers)C++20
Compilation error
0 ms0 KiB
#include "registers.cpp" #include <bitset> #include <cassert> #include <cstdio> #include <string> #include <vector> #ifdef _MSC_VER # define NORETURN __declspec(noreturn) #elif defined __GNUC__ # define NORETURN __attribute__ ((noreturn)) #else # define NORETURN #endif static const int m = 100; static const int b = 2000; static const int id_move = 0; static const int id_store = 1; static const int id_and = 2; static const int id_or = 3; static const int id_xor = 4; static const int id_not = 5; static const int id_left = 6; static const int id_right = 7; static const int id_add = 8; static const int id_print = 9; static int s, n, k, q; static int instruction_count = 0; static std::bitset<b> reg[m]; static inline void load_register(std::bitset<b>& bs, std::vector<int>& v) { bs.reset(); for (int i = 0; i < (int)v.size(); i++) { for (int j = 0; j < k; j++) { bs[i * k + j] = (v[i] & (1 << j)); } } } static inline void unload_register(std::bitset<b>& bs, std::vector<int>& v) { v.assign(v.size(), 0); for (int i = 0; i < (int)v.size(); i++) { for (int j = 0; j < k; j++) { v[i] |= (bs[i * k + j] << j); } } } static void execute_move(int t, int x) { reg[t] = reg[x]; } static void execute_store(int t, std::vector<bool> v) { for(int i=0; i<b; i++) { reg[t][i] = v[i]; // bit-by-bit copy } } static void execute_and(int t, int x, int y) { reg[t] = (reg[x]&reg[y]); } static void execute_or(int t, int x, int y) { reg[t] = (reg[x]|reg[y]); } static void execute_xor(int t, int x, int y) { reg[t] = (reg[x]^reg[y]); } static void execute_not(int t, int x) { reg[t] = (~reg[x]); } static void execute_left(int t, int x, int p) { reg[t] = (reg[x]<<p); } static void execute_right(int t, int x, int p) { reg[t] = (reg[x]>>p); } static void execute_add(int t, int x, int y) { std::bitset<b> tmp; bool carry = false; for(int i = 0; i < b; i++) { tmp[i] = (reg[x][i] ^ reg[y][i] ^ carry); carry = (reg[x][i] & reg[y][i]) || (reg[x][i] & carry) || (reg[y][i] & carry); // discard the last carry } reg[t] = tmp; } static void execute_print(int t) { std::vector<int> v(n); unload_register(reg[t], v); printf("register %d: ", t); for (int i = 0; i < n; i++) { printf("%d%c", v[i], i < n - 1 ? ' ' : '\n'); } } struct instruction { int type, t, x, y; std::vector<bool> v; instruction(int _type): type(_type), t(-1), x(-1), y(-1) {} void execute() { switch(type) { case id_move: execute_move(t, x); break; case id_store: execute_store(t, v); break; case id_and: execute_and(t, x, y); break; case id_or: execute_or(t, x, y); break; case id_xor: execute_xor(t, x, y); break; case id_not: execute_not(t, x); break; case id_left: execute_left(t, x, y); break; case id_right: execute_right(t, x, y); break; case id_add: execute_add(t, x, y); break; case id_print: execute_print(t); break; default: assert(false); } } void print() { switch(type) { case id_move: printf("move %d %d\n", t, x); break; case id_store: printf("store %d ", t); for(int i=0; i<b; i++) { putchar(v[i]+'0'); } putchar('\n'); break; case id_and: printf("and %d %d %d\n", t, x, y); break; case id_or: printf("or %d %d %d\n", t, x, y); break; case id_xor: printf("xor %d %d %d\n", t, x, y); break; case id_not: printf("not %d %d\n", t, x); break; case id_left: printf("left %d %d %d\n", t, x, y); break; case id_right: printf("right %d %d %d\n", t, x, y); break; case id_add: printf("add %d %d %d\n", t, x, y); break; case id_print: printf("print %d\n", t); break; default: assert(false); } } }; static std::vector<instruction> instructions; NORETURN static inline void error(std::string reason) { printf("%s\n", reason.c_str()); fflush(stdout); exit(0); } static inline void check_instructions() { if (instruction_count >= q) { error("Too many instructions"); } } static inline void check_index(int index) { if (index < 0 || index >= m) { error("Invalid index"); } } void append_move(int t, int x) { check_instructions(); check_index(t); check_index(x); instruction i(id_move); i.t = t; i.x = x; instruction_count++; instructions.push_back(i); } void append_store(int t, std::vector<bool> v) { check_instructions(); check_index(t); if ((int)v.size() != b) { error("Value to store is not b bits long"); } instruction i(id_store); i.t = t; i.v = v; instruction_count++; instructions.push_back(i); } void append_and(int t, int x, int y) { check_instructions(); check_index(t); check_index(x); check_index(y); instruction i(id_and); i.t = t; i.x = x; i.y = y; instruction_count++; instructions.push_back(i); } void append_or(int t, int x, int y) { check_instructions(); check_index(t); check_index(x); check_index(y); instruction i(id_or); i.t = t; i.x = x; i.y = y; instruction_count++; instructions.push_back(i); } void append_xor(int t, int x, int y) { check_instructions(); check_index(t); check_index(x); check_index(y); instruction i(id_xor); i.t = t; i.x = x; i.y = y; instruction_count++; instructions.push_back(i); } void append_not(int t, int x) { check_instructions(); check_index(t); check_index(x); instruction i(id_not); i.t = t; i.x = x; instruction_count++; instructions.push_back(i); } void append_left(int t, int x, int p) { check_instructions(); check_index(t); check_index(x); if (p < 0 || p > b) { error("Invalid shift value"); } instruction i(id_left); i.t = t; i.x = x; i.y = p; instruction_count++; instructions.push_back(i); } void append_right(int t, int x, int p) { check_instructions(); check_index(t); check_index(x); if (p < 0 || p > b) { error("Invalid shift value"); } instruction i(id_right); i.t = t; i.x = x; i.y = p; instruction_count++; instructions.push_back(i); } void append_add(int t, int x, int y) { check_instructions(); check_index(t); check_index(x); check_index(y); instruction i(id_add); i.t = t; i.x = x; i.y = y; instruction_count++; instructions.push_back(i); } void append_print(int t) { check_index(t); instruction i(id_print); i.t = t; instructions.push_back(i); } int main() { assert(4 == scanf("%d %d %d %d", &s, &n, &k, &q)); construct_instructions(s, n, k, q); for(instruction &i : instructions) { i.print(); } std::vector<int> a(n); bool exited = false; while (true) { for (int i = 0; i < n; i++) { assert(1 == scanf("%d", &a[i])); if (i == 0 && a[i] == -1) { fflush(stdout); exited = true; break; } } if (exited) break; load_register(reg[0], a); for (int i = 1; i < m; i++) { reg[i].reset(); } for (instruction& i : instructions) { i.execute(); } unload_register(reg[0], a); if (s == 0) { printf("%d\n", a[0]); } else { for (int i = 0; i < n; i++) { printf("%d%c", a[i], i == n - 1 ? '\n' : ' '); } } } printf("number of instructions: %d\n", instruction_count); return 0; }

Compilation message (stderr)

In file included from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1:
registers.cpp:1:25: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
    1 | #include "registers.cpp"
      |                         ^
registers.cpp:3:18: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
    3 | #include <bitset>
      |                  ^
registers.cpp:4:19: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
    4 | #include <cassert>
      |                   ^
registers.cpp:5:18: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
    5 | #include <cstdio>
      |                  ^
registers.cpp:6:18: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
    6 | #include <string>
      |                  ^
registers.cpp:7:18: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
    7 | #include <vector>
      |                  ^
In file included from registers.cpp:3,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1:
/usr/include/c++/11/bitset:47:18: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   47 | #include <string>
      |                  ^
/usr/include/c++/11/bitset:48:71: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   48 | #include <bits/functexcept.h>   // For invalid_argument, out_of_range,
      |                                                                       ^
/usr/include/c++/11/bitset:50:18: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   50 | #include <iosfwd>
      |                  ^
/usr/include/c++/11/bitset:51:32: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   51 | #include <bits/cxxabi_forced.h>
      |                                ^
/usr/include/c++/11/bitset:54:35: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   54 | # include <bits/functional_hash.h>
      |                                   ^
In file included from registers.cpp:4,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1:
/usr/include/c++/11/cassert:43:28: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   43 | #include <bits/c++config.h>
      |                            ^
/usr/include/c++/11/cassert:44:20: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   44 | #include <assert.h>
      |                    ^
In file included from registers.cpp:5,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1:
/usr/include/c++/11/cstdio:41:28: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   41 | #include <bits/c++config.h>
      |                            ^
/usr/include/c++/11/cstdio:42:19: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   42 | #include <stdio.h>
      |                   ^
In file included from registers.cpp:6,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1:
/usr/include/c++/11/string:38:28: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   38 | #include <bits/c++config.h>
      |                            ^
/usr/include/c++/11/string:39:28: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   39 | #include <bits/stringfwd.h>
      |                            ^
/usr/include/c++/11/string:40:70: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   40 | #include <bits/char_traits.h>  // NB: In turn includes stl_algobase.h
      |                                                                      ^
/usr/include/c++/11/string:41:28: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   41 | #include <bits/allocator.h>
      |                            ^
/usr/include/c++/11/string:42:34: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   42 | #include <bits/cpp_type_traits.h>
      |                                  ^
/usr/include/c++/11/string:43:69: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   43 | #include <bits/localefwd.h>    // For operators >>, <<, and getline.
      |                                                                     ^
/usr/include/c++/11/string:44:33: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   44 | #include <bits/ostream_insert.h>
      |                                 ^
/usr/include/c++/11/string:45:42: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   45 | #include <bits/stl_iterator_base_types.h>
      |                                          ^
/usr/include/c++/11/string:46:42: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   46 | #include <bits/stl_iterator_base_funcs.h>
      |                                          ^
/usr/include/c++/11/string:47:31: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   47 | #include <bits/stl_iterator.h>
      |                               ^
/usr/include/c++/11/string:48:43: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   48 | #include <bits/stl_function.h> // For less
      |                                           ^
/usr/include/c++/11/string:49:32: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   49 | #include <ext/numeric_traits.h>
      |                                ^
/usr/include/c++/11/string:50:31: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   50 | #include <bits/stl_algobase.h>
      |                               ^
/usr/include/c++/11/string:52:57: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   52 | #  include <bits/stl_algo.h> // For remove and remove_if
      |                                                         ^
/usr/include/c++/11/string:54:31: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   54 | #include <bits/range_access.h>
      |                               ^
/usr/include/c++/11/string:55:31: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   55 | #include <bits/basic_string.h>
      |                               ^
/usr/include/c++/11/string:56:33: error: #include nested depth 200 exceeds maximum of 200 (use -fmax-include-depth=DEPTH to increase the maximum)
   56 | #include <bits/basic_string.tcc>
      |                                 ^
In file included from registers.cpp:7,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from registers.cpp:1,
                 from regi