This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "registers.h"
#include <bits/stdc++.h>
using namespace std;
const int M = 100, B = 2000;
// 99 - zero
// 98 - one
// 97 - 2^k - 1
// 1 - cur_min
// 2 - a[i]
// 3 - !a[i]
// 4 - -a[i] or !a[i] + 1
// 5 - cur_min - a[i]
// 6 - rev01(coef_i base)
// 7 - rev01(coef_min base)
// 8 - coef_min
// 9 - coef_i
// 10 - coef_min & cur_min
// 11 - coef_i & a[i]
void construct_instructions(int s, int n, int k, int q) {
/// init
vector<bool> stv(B);
stv[0] = 1;
append_store(98, stv); // <------ 1
for(int i = 1; i < k; i++) stv[i] = 1;
append_store(97, stv); // <------ 2
///
append_and(1, 97, 0); // <------ 3
append_print(1);
for(int i = 1; i < n; i++){
append_right(2, 0, i * k); // <------ 1
append_and(2, 97, 2); // <------ 2
/// subtraction
append_not(3, 2); // <------ 3
append_add(4, 3, 98); // <------ 4
append_add(5, 1, 4); // <------ 5
///
append_right(7, 5, B - 1); // <------ 6
append_xor(6, 7, 98); // <------ 7
append_add(8, 97, 6); // <------ 8
append_add(9, 97, 7); // <------ 9
append_and(10, 1, 8); // <------ 10
append_and(11, 2, 9); // <------ 11
append_add(1, 10, 11); // <------ 12
append_print(1);
}
append_move(0, 1); // <------ 4
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |