# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1154675 | simuyu | Broken Device (JOI17_broken_device) | C++20 | 18 ms | 1344 KiB |
#include "Annalib.h"
using namespace std;
void Anna( int N, long long X, int K, int P[] ) {
int sshuffle[150];
sshuffle[0] = 125;
sshuffle[1] = 110;
sshuffle[2] = 107;
sshuffle[3] = 124;
sshuffle[4] = 29;
sshuffle[5] = 66;
sshuffle[6] = 74;
sshuffle[7] = 79;
sshuffle[8] = 20;
sshuffle[9] = 149;
sshuffle[10] = 39;
sshuffle[11] = 109;
sshuffle[12] = 140;
sshuffle[13] = 119;
sshuffle[14] = 136;
sshuffle[15] = 134;
sshuffle[16] = 121;
sshuffle[17] = 1;
sshuffle[18] = 76;
sshuffle[19] = 106;
sshuffle[20] = 98;
sshuffle[21] = 113;
sshuffle[22] = 118;
sshuffle[23] = 53;
sshuffle[24] = 94;
sshuffle[25] = 3;
sshuffle[26] = 137;
sshuffle[27] = 105;
sshuffle[28] = 11;
sshuffle[29] = 14;
sshuffle[30] = 47;
sshuffle[31] = 59;
sshuffle[32] = 132;
sshuffle[33] = 12;
sshuffle[34] = 92;
sshuffle[35] = 104;
sshuffle[36] = 100;
sshuffle[37] = 146;
sshuffle[38] = 35;
sshuffle[39] = 148;
sshuffle[40] = 9;
sshuffle[41] = 87;
sshuffle[42] = 135;
sshuffle[43] = 69;
sshuffle[44] = 144;
sshuffle[45] = 120;
sshuffle[46] = 116;
sshuffle[47] = 24;
sshuffle[48] = 141;
sshuffle[49] = 88;
sshuffle[50] = 27;
sshuffle[51] = 30;
sshuffle[52] = 33;
sshuffle[53] = 68;
sshuffle[54] = 58;
sshuffle[55] = 85;
sshuffle[56] = 49;
sshuffle[57] = 40;
sshuffle[58] = 36;
sshuffle[59] = 38;
sshuffle[60] = 8;
sshuffle[61] = 83;
sshuffle[62] = 103;
sshuffle[63] = 25;
sshuffle[64] = 142;
sshuffle[65] = 7;
sshuffle[66] = 65;
sshuffle[67] = 77;
sshuffle[68] = 80;
sshuffle[69] = 102;
sshuffle[70] = 123;
sshuffle[71] = 2;
sshuffle[72] = 10;
sshuffle[73] = 139;
sshuffle[74] = 84;
sshuffle[75] = 21;
sshuffle[76] = 0;
sshuffle[77] = 43;
sshuffle[78] = 143;
sshuffle[79] = 127;
sshuffle[80] = 112;
sshuffle[81] = 71;
sshuffle[82] = 63;
sshuffle[83] = 17;
sshuffle[84] = 13;
sshuffle[85] = 82;
sshuffle[86] = 48;
sshuffle[87] = 95;
sshuffle[88] = 52;
sshuffle[89] = 44;
sshuffle[90] = 114;
sshuffle[91] = 64;
sshuffle[92] = 28;
sshuffle[93] = 101;
sshuffle[94] = 57;
sshuffle[95] = 51;
sshuffle[96] = 115;
sshuffle[97] = 45;
sshuffle[98] = 16;
sshuffle[99] = 31;
sshuffle[100] = 93;
sshuffle[101] = 99;
sshuffle[102] = 23;
sshuffle[103] = 46;
sshuffle[104] = 138;
sshuffle[105] = 50;
sshuffle[106] = 96;
sshuffle[107] = 89;
sshuffle[108] = 56;
sshuffle[109] = 32;
sshuffle[110] = 22;
sshuffle[111] = 128;
sshuffle[112] = 60;
sshuffle[113] = 131;
sshuffle[114] = 86;
sshuffle[115] = 72;
sshuffle[116] = 97;
sshuffle[117] = 5;
sshuffle[118] = 133;
sshuffle[119] = 67;
sshuffle[120] = 34;
sshuffle[121] = 147;
sshuffle[122] = 108;
sshuffle[123] = 37;
sshuffle[124] = 91;
sshuffle[125] = 6;
sshuffle[126] = 4;
sshuffle[127] = 117;
sshuffle[128] = 19;
sshuffle[129] = 42;
sshuffle[130] = 41;
sshuffle[131] = 90;
sshuffle[132] = 126;
sshuffle[133] = 15;
sshuffle[134] = 70;
sshuffle[135] = 62;
sshuffle[136] = 111;
sshuffle[137] = 61;
sshuffle[138] = 75;
sshuffle[139] = 73;
sshuffle[140] = 130;
sshuffle[141] = 129;
sshuffle[142] = 78;
sshuffle[143] = 122;
sshuffle[144] = 18;
sshuffle[145] = 81;
sshuffle[146] = 26;
sshuffle[147] = 145;
sshuffle[148] = 55;
sshuffle[149] = 54;
// hamming code yay HAHA
bool b1, b2, b3, b4, b5, b6, b7;
int nextbit = 0;
for (int i=0; i<64; i+=4) {
// i to i+4 are the data bits
b1 = (bool) ( X & (((long long)1)<<i) );
b2 = (bool) ( X & (((long long)1)<<(i+1)) );
b3 = (bool) ( X & (((long long)1)<<(i+2)) );
b4 = (bool) ( X & (((long long)1)<<(i+3)) );
// b1^b2^b3^b5 = 0
// b5 = b1^b2^b3
b5 = b1^b2^b3;
b6 = b2^b3^b4;
b7 = b2^b3^b4;
// set those seven bits!!
Set(sshuffle[nextbit++], (int)b1);
Set(sshuffle[nextbit++], (int)b2);
Set(sshuffle[nextbit++], (int)b3);
Set(sshuffle[nextbit++], (int)b4);
Set(sshuffle[nextbit++], (int)b5);
Set(sshuffle[nextbit++], (int)b6);
Set(sshuffle[nextbit++], (int)b7);
}
// then the rest is just nothing
while (nextbit < 150) {
Set(sshuffle[nextbit++], 0);
}
}
#include "Brunolib.h"
using namespace std;
long long Bruno( int N, int A[] ) {
int sshuffle[150];
sshuffle[0] = 125;
sshuffle[1] = 110;
sshuffle[2] = 107;
sshuffle[3] = 124;
sshuffle[4] = 29;
sshuffle[5] = 66;
sshuffle[6] = 74;
sshuffle[7] = 79;
sshuffle[8] = 20;
sshuffle[9] = 149;
sshuffle[10] = 39;
sshuffle[11] = 109;
sshuffle[12] = 140;
sshuffle[13] = 119;
sshuffle[14] = 136;
sshuffle[15] = 134;
sshuffle[16] = 121;
sshuffle[17] = 1;
sshuffle[18] = 76;
sshuffle[19] = 106;
sshuffle[20] = 98;
sshuffle[21] = 113;
sshuffle[22] = 118;
sshuffle[23] = 53;
sshuffle[24] = 94;
sshuffle[25] = 3;
sshuffle[26] = 137;
sshuffle[27] = 105;
sshuffle[28] = 11;
sshuffle[29] = 14;
sshuffle[30] = 47;
sshuffle[31] = 59;
sshuffle[32] = 132;
sshuffle[33] = 12;
sshuffle[34] = 92;
sshuffle[35] = 104;
sshuffle[36] = 100;
sshuffle[37] = 146;
sshuffle[38] = 35;
sshuffle[39] = 148;
sshuffle[40] = 9;
sshuffle[41] = 87;
sshuffle[42] = 135;
sshuffle[43] = 69;
sshuffle[44] = 144;
sshuffle[45] = 120;
sshuffle[46] = 116;
sshuffle[47] = 24;
sshuffle[48] = 141;
sshuffle[49] = 88;
sshuffle[50] = 27;
sshuffle[51] = 30;
sshuffle[52] = 33;
sshuffle[53] = 68;
sshuffle[54] = 58;
sshuffle[55] = 85;
sshuffle[56] = 49;
sshuffle[57] = 40;
sshuffle[58] = 36;
sshuffle[59] = 38;
sshuffle[60] = 8;
sshuffle[61] = 83;
sshuffle[62] = 103;
sshuffle[63] = 25;
sshuffle[64] = 142;
sshuffle[65] = 7;
sshuffle[66] = 65;
sshuffle[67] = 77;
sshuffle[68] = 80;
sshuffle[69] = 102;
sshuffle[70] = 123;
sshuffle[71] = 2;
sshuffle[72] = 10;
sshuffle[73] = 139;
sshuffle[74] = 84;
sshuffle[75] = 21;
sshuffle[76] = 0;
sshuffle[77] = 43;
sshuffle[78] = 143;
sshuffle[79] = 127;
sshuffle[80] = 112;
sshuffle[81] = 71;
sshuffle[82] = 63;
sshuffle[83] = 17;
sshuffle[84] = 13;
sshuffle[85] = 82;
sshuffle[86] = 48;
sshuffle[87] = 95;
sshuffle[88] = 52;
sshuffle[89] = 44;
sshuffle[90] = 114;
sshuffle[91] = 64;
sshuffle[92] = 28;
sshuffle[93] = 101;
sshuffle[94] = 57;
sshuffle[95] = 51;
sshuffle[96] = 115;
sshuffle[97] = 45;
sshuffle[98] = 16;
sshuffle[99] = 31;
sshuffle[100] = 93;
sshuffle[101] = 99;
sshuffle[102] = 23;
sshuffle[103] = 46;
sshuffle[104] = 138;
sshuffle[105] = 50;
sshuffle[106] = 96;
sshuffle[107] = 89;
sshuffle[108] = 56;
sshuffle[109] = 32;
sshuffle[110] = 22;
sshuffle[111] = 128;
sshuffle[112] = 60;
sshuffle[113] = 131;
sshuffle[114] = 86;
sshuffle[115] = 72;
sshuffle[116] = 97;
sshuffle[117] = 5;
sshuffle[118] = 133;
sshuffle[119] = 67;
sshuffle[120] = 34;
sshuffle[121] = 147;
sshuffle[122] = 108;
sshuffle[123] = 37;
sshuffle[124] = 91;
sshuffle[125] = 6;
sshuffle[126] = 4;
sshuffle[127] = 117;
sshuffle[128] = 19;
sshuffle[129] = 42;
sshuffle[130] = 41;
sshuffle[131] = 90;
sshuffle[132] = 126;
sshuffle[133] = 15;
sshuffle[134] = 70;
sshuffle[135] = 62;
sshuffle[136] = 111;
sshuffle[137] = 61;
sshuffle[138] = 75;
sshuffle[139] = 73;
sshuffle[140] = 130;
sshuffle[141] = 129;
sshuffle[142] = 78;
sshuffle[143] = 122;
sshuffle[144] = 18;
sshuffle[145] = 81;
sshuffle[146] = 26;
sshuffle[147] = 145;
sshuffle[148] = 55;
sshuffle[149] = 54;
int nextbit = 0;
bool b1, b2, b3, b4, b5, b6, b7;
bool c5, c6, c7;
long long X = 0;
long long nextXbit = 0;
for (int i=0; i<16; i++) {
// decode the hamming code each time
b1 = (A[sshuffle[nextbit++]]==1);
b2 = (A[sshuffle[nextbit++]]==1);
b3 = (A[sshuffle[nextbit++]]==1);
b4 = (A[sshuffle[nextbit++]]==1);
b5 = (A[sshuffle[nextbit++]]==1);
b6 = (A[sshuffle[nextbit++]]==1);
b7 = (A[sshuffle[nextbit++]]==1);
// start decoding
c5 = b1^b2^b3^b5;
c6 = b1^b3^b4^b6;
c7 = b2^b3^b4^b7;
if (c5 && c6 && c7) {
b3 = !b3;
} else if (c5 && c6 && (!c7)) {
b1 = !b1;
} else if (c5 && c7 && (!c6)) {
b2 = !b2;
} else if (c6 && c7 && (!c5)) {
b4 = !b4;
}
// now that error correction was done, decode the bits.
X |= ((long long)b1)*(((long long)1)<<(nextXbit++));
X |= ((long long)b2)*(((long long)1)<<(nextXbit++));
X |= ((long long)b3)*(((long long)1)<<(nextXbit++));
X |= ((long long)b4)*(((long long)1)<<(nextXbit++));
}
return X;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |