Submission #597541

#TimeUsernameProblemLanguageResultExecution timeMemory
5975418e7Bit Shift Registers (IOI21_registers)C++17
33 / 100
1 ms296 KiB
//Challenge: Accepted #include "registers.h" #include <bits/stdc++.h> using namespace std; void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #define ll long long #define maxn 400005 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); const int M = 100; const int B = 2000; void chmin(int K) { append_xor(2, 0, 1); { int tmp = K - 1; int i = 0; while (tmp) { if (tmp <= (1<<i)) { append_right(3, 2, tmp); append_or(2, 2, 3); tmp = 0; } else { append_right(3, 2, (1<<i)); append_or(2, 2, 3); tmp -= 1<<i; } i++; } } //append_print(2); append_right(4, 2, 1); append_xor(5, 2, 4); //5: 1 on the different bit //append_print(5); append_and(6, 1, 5); //check if 6 is 0 append_print(6); append_add(6, 6, 99); append_print(6); append_right(6, 6, K); // 0 or 1 append_print(6); append_and(6, 6, 99); { int tmp = K - 1; int i = 0; while (tmp) { if (tmp <= (1<<i)) { append_left(7, 6, tmp); append_or(6, 6, 7); tmp = 0; } else { append_left(7, 6, (1<<i)); append_or(6, 6, 7); tmp -= 1<<i; } i++; } } append_not(7, 6); append_and(8, 1, 7); append_and(9, 0, 6); append_add(0, 8, 9); } void solvemin(int N, int K) { if (N == 1) return; append_right(1, 0, K * (N / 2) * 2); chmin(K); //append_print(0); //append_print(1); solvemin((N + 1) / 2, K); } void construct_instructions(int tasktype, int N, int K, int q) { vector<bool> st(B, 0); for (int j = 0;j < N;j += 2) { for (int i = 0;i < K;i++) st[j*K + i] = 1; } for (int i = N*K;i < B;i++) st[i] = 1; append_store(99, st); if (tasktype == 0) { append_right(1, 0, K); append_and(0, 0, 99); append_and(1, 1, 99); chmin(K); //append_print(0); //append_print(1); solvemin((N+1) / 2, K); } } /* 0 4 3 1000 1 3 4 2 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...