Submission #437159

#TimeUsernameProblemLanguageResultExecution timeMemory
437159jeroenodbBit Shift Registers (IOI21_registers)C++17
0 / 100
1 ms332 KiB
#ifdef LOCAL #include "grader.cpp" #else #include "registers.h" #endif #include "bits/stdc++.h" using namespace std; #define all(x) begin(x),end(x) template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; } template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { string sep; for (const T &x : v) os << sep << x, sep = " "; return os; } #define debug(a) cerr << "(" << #a << ": " << a << ")\n"; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int,int> pi; const int one = 99, work=97; const int full = 98,B=2000; int K; void mynegate(int t,int a) { append_not(t,a); append_add(t,t,one); } void leq(int a, int b) { mynegate(work,b); append_add(work,a,work); append_left(work-1,K,one); append_and(work,work,work-1); append_right(work,work,K); append_add(work,work,one); // work now filled with all zeroes or ones, depending on a<=b } void construct_instructions(int s, int n, int k, int q) { { // init K=k; append_not(full,full); vector<bool> v(B); v[0]=1; append_store(one,v); } assert(s==0 and n==2); append_move(1,0); append_right(1,1,k); leq(0,1); append_and(0,0,work); append_not(work,work); append_and(work-1,1,work); append_xor(0,work-1,0); }
#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...