#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cassert>
#include "transmission.h"
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;
const int T = 2;

static vector<bool> data;

vector<bool> receive(const vector<bool>& message, int n, int d)
{
    int m = message.size();

    for(int i = 0; i < m;)
    {
        int island = 0, j = i;
        while(j < m && message[j] == message[i])
        {
            island++;
            j++;
        }

        while(island % T)
            island++;
        for(int j = 1; j <= island / T; j++)
            data.pb(message[i]);

        i = j;
    }

    while((int)data.size() > n)
        data.pop_back();
    while((int)data.size() < n)
        data.pb(rand() % 2);
    //assert((int)data.size() == n);
    return data;
}


//int main()
//{
//    vector <bool> ardata;
//    for(int i = 1; i <= 5; i++)
//        ardata.pb(0);
//    for(int i = 1; i <= 3; i++)
//        ardata.pb(1);
//    for(int i = 1; i <= 2; i++)
//        ardata.pb(0);
//
//    vector <bool> rec = receive(ardata, 4, 2);
//    for(auto x: rec)
//        cerr << x << " ";
//    cerr << endl;
//}
