제출 #1323238

#제출 시각아이디문제언어결과실행 시간메모리
1323238simona1230Flight to the Ford (BOI22_communication)C++20
0 / 100
11 ms3084 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)
{
    connect(0,1);
    connect(15,2);
    connect(9,3);

    sendnum(X);
}

std::pair<int, int> decode(int N)
{
    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};
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...