#include "registers.h"
#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::vector;
using std::string;
using std::endl;
using ll = long long;
using vi = vector<ll>;
using vii = vector<vi>;
using pii = std::pair<ll,ll>;
#define rep(i,j,k) for(ll i=ll(j); i<ll(k); i++)
#define REP(i,j,k) for(ll i=ll(j); i<=ll(k); i++)
#define per(i,j,k) for(ll i=ll(j); i>=ll(k); i--)
#define ln "\n"
#define all(a) a.begin(), a.end()
#define pb emplace_back
#define mp std::make_pair
constexpr ll inf = (1ll<<60);
void construct_instructions(int s, int n, int k, int q) {
if(s == 0){
constexpr ll base = 90, allone = 91;
constexpr ll mb = 2000;
{
vector<bool> v(mb);
rep(i,1,mb){
if(i%k == 0) v[i] = 1;
}
append_store(base,v);
}
{
vector<bool> v(mb);
rep(i,n*k,mb){
v[i] = 1;
}
append_store(allone,v);
append_or(0,0,allone);
}
while(n > 1){
ll half = n/2;
append_right(1, 0, half*k);
append_print(0);
append_print(1);
append_not(2,1);
append_add(3,0,2);
append_xor(4,0,1);
append_xor(5,3,4);
append_and(6,base,5);
ll lk = 1;
while(lk < k) lk *= 2;
if(lk != k){
lk /= 2;
append_right(7,6,k-lk);
append_or(6,6,7);
}
while(lk > 1){
append_right(7,6,lk/2);
append_or(6,6,7);
lk /= 2;
}
/*append_left(7,6,2);
append_or(6,6,7);
append_left(7,6,4);
append_or(6,6,7);
append_left(7,6,2);
append_or(6,6,7);
append_left(7,6,1);
append_or(6,6,7);*/
append_right(6,6,1);
append_and(7,0,6);
append_print(6);
append_not(6,6);
append_print(6);
append_and(8,1,6);
append_print(7);
append_print(8);
append_or(0,7,8);
n = (n+1)/2;
}
}
else{
constexpr ll base = 90, allone = 91;
constexpr ll mb = 2000;
{
vector<bool> v(mb);
rep(i,1,mb){
if(i%k == 0) v[i] = 1;
}
append_store(base,v);
}
{
vector<bool> v(mb);
rep(i,n*k,mb){
v[i] = 1;
}
append_store(allone,v);
append_or(0,0,allone);
}
constexpr ll ok = 99, remain = 98, mem = 97, extract = 96, modk = 95;
{
vector<bool> v(mb);
rep(i,0,k){
v[i] = 1;
}
append_store(extract,v);
}
{
vector<bool> v(mb);
rep(i,0,mb){
if(i%k == 0) v[i] = 1;
}
append_store(modk,v);
}
append_move(remain, 0);
per(t,n,1){
append_move(0,remain);
ll nn = n;
while(nn > 1){
ll half = nn/2;
append_right(1, 0, half*k);
append_not(2,1);
append_add(3,0,2);
append_xor(4,0,1);
append_xor(5,3,4);
append_and(6,base,5);
ll lk = 1;
while(lk < k) lk *= 2;
if(lk != k){
lk /= 2;
append_right(7,6,k-lk);
append_or(6,6,7);
}
while(lk > 1){
append_right(7,6,lk/2);
append_or(6,6,7);
lk /= 2;
}
/*append_left(7,6,2);
append_or(6,6,7);
append_left(7,6,4);
append_or(6,6,7);
append_left(7,6,2);
append_or(6,6,7);
append_left(7,6,1);
append_or(6,6,7);*/
append_right(6,6,1);
append_and(7,0,6);
append_not(6,6);
append_and(8,1,6);
append_or(0,7,8);
nn = (nn+1)/2;
}
append_move(mem,0);
append_and(mem,mem,extract);
append_print(mem);
{
append_move(50,mem);
{
vector<bool> zero(mb);
append_store(51,zero);
append_store(54,zero);
}
rep(_,0,n){
append_or(51,50,51);
append_left(50,50,k);
append_print(50);
}
append_print(51);
append_xor(52,51,remain);
append_not(52,52);
append_print(52);
append_move(53,modk);
rep(_,0,k){
append_and(53,53,52);
append_right(52,52,1);
}
rep(_,0,k){
append_or(54,53,54);
append_left(53,53,1);
}
append_or(remain,remain,54);
append_print(remain);
}
append_print(mem);
append_left(mem,mem,(n-t)*k);
append_or(ok,mem,ok);
append_print(ok);
}
append_move(0,ok);
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
468 KB |
Incorrect sorting |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
468 KB |
Incorrect sorting |
2 |
Halted |
0 ms |
0 KB |
- |