Submission #1211876

#TimeUsernameProblemLanguageResultExecution timeMemory
1211876user736482Message (IOI24_message)C++20
100 / 100
411 ms884 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099
#include "message.h"
vector<bool>efm,v;
vector<ll>pck[31],v2;
ll nxt[31];
vector<bool>ns;
void send_message(vector<bool>m,vector<bool>c){
    efm=m;
    efm.pb(1);
    for(ll i=0;i<1024-(ll)m.size();i++)efm.pb(0);
    reverse(efm.begin(),efm.end());
    for(ll i=0;i<31;i++){pck[i].clear();
        if(c[i]){
            for(ll j=0;j<66;j++)pck[i].pb(0);
        }
        else{
            for(ll j=i+1;c[j%31];j++)pck[i].pb(0);
            pck[i].pb(1);
            while(pck[i].size()<66){
                pck[i].pb(efm.back());efm.pop_back();
            }
        }
    }
    v.resize(31);
    for(ll i=0;i<66;i++){
        for(ll j=0;j<31;j++)v[j]=pck[j][i];
        send_packet(v);
    }
}
vector<bool>receive_message(vector<vector<bool>>r){
    ns.clear();
    for(ll i=0;i<31;i++){nxt[i]=(i+1)%31;for(ll j=0;j<66 && r[j][i]==0;j++)nxt[i]=(i+j+2)%31;}
    for(ll i=0;i<31;i++){
        ll ile=1;
        ll ak=nxt[i];
        v2={i};
        while(ak!=i){
            v2.pb(ak);
            ak=nxt[ak];
            ile++;
            if(ile>16)break;        
        }
        if(ile!=16)continue;
        for(ll j : v2){
            ll k=1;
            while(!r[k-1][j])k++;
            while(k<66){ns.pb(r[k][j]);k++;}
        }
        break;
    }
    while(!ns.back())ns.pop_back();
    ns.pop_back();
    return ns;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...