Submission #1297955

#TimeUsernameProblemLanguageResultExecution timeMemory
1297955scalifrastico_098Message (IOI24_message)C++20
0 / 100
240 ms796 KiB
#include "message.h"
#include <bits/stdc++.h>
using namespace std;
vector<bool> l;
void send_message(vector<bool> s, vector<bool> c) {
  int ij=s.size(), ik=0; vector<bool> k(ij), v(31, 1); l.assign(31, 0);
  while(c[ik]==1&&ik<31){send_packet(v); ik++;}
  while(ik<31)
  {
    if(c[ik]==0){l[ik]=1;}
    for(int i=0; i<31; i++)
    {
      if(l[i]==1){v[i]=c[ik]; ik++;}
    }
    send_packet(v);
  } 
  for(int i=0; i<31; i++)
  {
    if(c[i]==0){vector<bool> v(31, 0); send_packet(v);} 
    else{vector<bool> v(31, 1); send_packet(v);}
  }
  vector<int> mi; for(int i=0; i<31; i++){if(c[i]==0)mi.push_back(i);}
  vector<bool> ne; int sz=s.size()+4, r1=16-(sz%16); r1%=16; 
  for(int i=0; i<4; i++){ne.push_back((r1&1)); r1>>=1;} 
  for(int i=0; i<s.size(); i++)ne.push_back(s[i]);
  r1=16-(sz%16); r1%=16; 
  for(int i =0; i<r1; i++)
  {
    ne.push_back(0);
  }
  int to=ne.size()/16, pr=0; 
  for(int i=0; i<to; i++)
  {
    vector<bool> ts(31, 0);
    for(int j=0; j<16; j++)ts[mi[j]]=ne[i*16+j];
    send_packet(ts);
  }
}
vector<bool> receive_message(vector<vector<bool>> r) {
  vector<bool> h; int ij=r.size(),ik; vector<int> k;
  for(int i=0; i<31&&i<ij; i++)
  {
    for(int j=0; j<31; j++)
    {
      if(l[j]){if(!r[i][j])k.push_back(j);}
    }
  }
  vector<bool> a; 
  for(int i=31; i<ij; i++)
  {
    for(auto x: k){a.push_back(r[i][x]);}
  }
  if(a.size()<4) return h; 
  int y=0;for(int i=3; i>=0; i--){y<<=1; if(a[i])y+=1;}
  int ty=a.size(); for(int i=4; i<ty-y; i++)h.push_back(a[i]);
  return h; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...