Submission #1154616

#TimeUsernameProblemLanguageResultExecution timeMemory
1154616simuyuBroken Device (JOI17_broken_device)C++20
0 / 100
18 ms1344 KiB
#include <bits/stdc++.h>
#include "Annalib.h"
//#include <Brunolib.h>
using namespace std;
#define f first
#define s second
#define ll long long




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<60; i+=4) {
        // i to i+4 are the data bits
        b1 = (bool) ( X & (1<<i) );
        b2 = (bool) ( X & (1<<(i+1)) );
        b3 = (bool) ( X & (1<<(i+2)) );
        b4 = (bool) ( X & (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 <bits/stdc++.h>
//#include <Annalib.h>
#include "Brunolib.h"
using namespace std;
#define f first
#define s second
#define ll long long



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;
    ll X = 0;
    ll nextXbit = 0;
    for (int i=0; i<15; 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 |= b1*(1<<(nextXbit++));
        X |= b2*(1<<(nextXbit++));
        X |= b3*(1<<(nextXbit++));
        X |= b4*(1<<(nextXbit++));
    }
    return X;
}


#Verdict Execution timeMemoryGrader output
Fetching results...