| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1323243 | simona1230 | Flight to the Ford (BOI22_communication) | C++20 | 0 ms | 0 KiB |
#include"communication.h"
#include <bits/stdc++.h>
using namespace std;
void sendnum(int x)
{
if(x==1)
{
for(int i=0;i<4;i++)
send(0);
}
if(x==2)
{
for(int i=0;i<4;i++)
send(1);
}
if(x==3)
{
send(1);
send(0);
send(0);
send(1);
}
}
vector<int> v[200001];
void connect(int x,int y)
{
for(int i=0;i<16;i++)
{
bool pos=1;
for(int j=0;j<2;j++)
{
int b1=(1<<j)&i;
int b2=(1<<(j+1))&i;
if(b1&&b2)pos=0;
}
if(pos==0)continue;
//cout<<(x^i)<<" - "<<y<<endl;
v[x^i].push_back(y);
}
}
void encode(int N, int X)
{
sendnum(X);
}
std::pair<int, int> decode(int N)
{
for(int i = 0; i < 16; i++)
{
v[i].clear()
}
connect(0,1);
connect(15,2);
connect(9,3);
int x=0;
for(int i=0;i<4;i++)
{
int b=receive();
if(b)x+=(1<<i);
}
//cout<<x<<" !"<<endl;
int num1=v[x][0];
int num2=v[x][0];
if(v[x].size()>1)num2=v[x][1];
//cout<<num1<<" + "<<num2<<endl;
return {num1,num2};
}
