Submission #1072248

#TimeUsernameProblemLanguageResultExecution timeMemory
1072248noyancanturkBit Shift Registers (IOI21_registers)C++17
10 / 100
1 ms772 KiB
#include "registers.h" #include<bits/stdc++.h> using namespace std; const int m=100,b=2000; int s,n,k,q; //variables #define ansreg 0 #define datareg 1 #define bitreg1 2 #define bitreg2 3 #define maskreg 4 #define temp 5 #define allxor 6 #define xorand1 7 #define xorand2 8 #define mask1 9 #define mask2 10 //constants #define zeromask 97 #define onemask 98 #define completemask 99 void moveguy(int i,int j){ append_right(i,datareg,(j+1)*k); append_left(i,i,(j+1)*k); append_xor(i,datareg,i); append_right(i,i,j*k); } void writebit(int t,int i,int j){ append_right(t,datareg,i*k+j); append_and(t,t,onemask); } void writebit(int t,int from,int i,int j){ append_right(t,from,i*k+j); append_and(t,t,onemask); } void wb(int t,int from,int j){ append_right(t,from,j); append_and(t,t,onemask); } void chmin(int t){ append_store(mask1,vector<bool>(b,1)); append_store(mask2,vector<bool>(b,1)); moveguy(temp,t); append_xor(allxor,ansreg,temp); append_and(xorand1,allxor,ansreg); append_and(xorand2,allxor,temp); for(int i=k-1;0<=i;i--){ wb(bitreg1,xorand1,i); wb(bitreg2,xorand2,i); //set bit 1 append_add(mask1,bitreg1,mask1); //set bit 2 append_add(mask2,bitreg2,mask2); //apply mask append_and(ansreg,ansreg,mask1); append_and(temp,temp,mask2); if(i){ append_and(maskreg,mask1,mask2); append_and(xorand1,xorand1,maskreg); append_and(xorand2,xorand2,maskreg); } /* append_print(ansreg); append_print(temp); append_print(mask1); append_print(mask2); */ } append_or(ansreg,ansreg,temp); } void construct_instructions(int S, int N, int K, int Q) { s=S,n=N,k=K,q=Q; if(!s){ append_move(datareg,0); //append_store(completemask,vector<bool>(b,1)); vector<bool>to(b,0); to[0]=1; append_store(onemask,to); moveguy(ansreg,0); for(int i=1;i<n;i++)chmin(i); }else assert(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...