#include #include #include #include #include using namespace std; const int MAX_UDI = 100000000; int main(int argc, char* argv[]) { int n_mins = atoi(argv[1]); int min_len = atoi(argv[2]); int max_len = atoi(argv[3]); int m = atoi(argv[4]); int m_before_update = atoi(argv[5]); int seed = atoi(argv[6]); std::mt19937 rng(seed); std::uniform_int_distribution udi(-MAX_UDI, MAX_UDI); std::uniform_int_distribution lens(min_len, max_len); set local_mins_set; vector local_mins; for (int i = 0; i < n_mins; ++i) { int candidate = udi(rng); while (local_mins_set.find(candidate) != local_mins_set.end()) { candidate = udi(rng); } local_mins.push_back(candidate); local_mins_set.insert(candidate); } sort(local_mins.begin(), local_mins.end()); std::uniform_int_distribution max_values(local_mins[n_mins - 1], MAX_UDI); int max_value = max_values(rng); vector e; e.push_back(max_value); for (int i = 0; i < n_mins; ++i) { int len = lens(rng); for (int j = 0; j < len; ++j) { e.push_back(local_mins[i]); } e.push_back(max_value); } int n = e.size(); cout << n << endl; for (int i = 0; i < n; ++i) { cout << e[i]; if (i < n - 1) { cout << " "; } } cout << endl; std::uniform_int_distribution indices(1, n); std::uniform_int_distribution fair_coin(0, 1); cout << m << endl; for (int i = 0; i < m_before_update; ++i) { int s = indices(rng); int f = indices(rng); if (s > f) { int t = s; s = f; f = t; } cout << "check " << s << " " << f << endl; } for (int i = 0; i < m - m_before_update; ++i) { int s = indices(rng); int f = indices(rng); if (s > f) { int t = s; s = f; f = t; } int d = udi(rng); if (fair_coin(rng) == 0) { cout << "check " << s << " " << f << endl; } else { cout << "update " << s << " " << f << " " << d << endl; } } return 0; }