Submission #584064

#TimeUsernameProblemLanguageResultExecution timeMemory
584064AndrejSh3Parrots (IOI11_parrots)C++17
81 / 100
3 ms1084 KiB
#include<bits/stdc++.h> #include"encoder.h" #include"encoderlib.h" using namespace std; /* Strategy: *) Encoder: Encoder will send the following number: xxxxxyyz xxxxx is the index of the number in the original message yy is which quarter of the message we're sending (33221100) z is true if the left bit of this quarter is 1, otherwise the right bit of this quarter is 1 This encoder will send at most 8*N messages of length 8 *) Decoder: Decoder will take the given numbers xxxxxyyz and create an array with the original message */ void sendValue( int i, int q, int Mi ){ int rv = i; rv <<= 2; rv |= q; rv <<= 1; int _Mi = 0; if( q == 0 ) _Mi |= ( ( Mi & (1<<1) ) | ( Mi & (1<<0) ) ) >> 0; if( q == 1 ) _Mi |= ( ( Mi & (1<<3) ) | ( Mi & (1<<2) ) ) >> 2; if( q == 2 ) _Mi |= ( ( Mi & (1<<5) ) | ( Mi & (1<<4) ) ) >> 4; if( q == 3 ) _Mi |= ( ( Mi & (1<<7) ) | ( Mi & (1<<6) ) ) >> 6; if( _Mi & 1 ) send( rv | 0 ); if( _Mi & 2 ) send( rv | 1 ); } void encode( int N, int M[] ){ for( int i = 0 ; i < N ; i++ ){ for( int q = 0 ; q < 4 ; q++ ) sendValue( i, q, M[i] ); } }
#include<bits/stdc++.h> #include"decoder.h" #include"decoderlib.h" using namespace std; /* Strategy: *) Encoder: Encoder will send the following number: xxxxxyyz xxxxx is the index of the number in the original message yy is which quarter of the message we're sending (33221100) z is true if the left bit of this quarter is 1, otherwise the right bit of this quarter is 1 This encoder will send at most 8*N messages of length 8 *) Decoder: Decoder will take the given numbers xxxxxyyz and create an array with the original message */ void recieveValue( int Xi, int &x, int &y, int &z ){ z = Xi & (0b1); Xi >>= 1; y = Xi & (0b11); Xi >>= 2; x = Xi; } void decode( int N, int L, int X[] ){ int A[N]; for( int &i : A ) i = 0; int x, y, z; for( int i = 0 ; i < L ; i++ ){ recieveValue( X[i], x, y, z ); A[x] |= ( ( z ? 0b10 : 0b01 ) ) << (2*y); } for( int i = 0 ; i < N ; i++ ) output(A[i]); }
#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...