#include #include std::vector read_input() { std::vector input; input.reserve(20000); int i = 0; while (std::cin >> i) input.push_back(i); return input; } int read_node(std::vector::iterator &it) { int child_count = *it++; int meta_count = *it++; int value = 0; for (int i = 0; i < child_count; i++) value += read_node(it); for (int i = 0; i < meta_count; i++) value += *it++; return value; } int main(int argc, char **argv) { std::vector input = read_input(); auto iterator = input.begin(); std::cout << read_node(iterator) << std::endl; }