제출 #1338174

#제출 시각아이디문제언어결과실행 시간메모리
1338174aritro_메시지 (IOI24_message)C++20
0 / 100
187 ms832 KiB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()

void send_message(vector<bool>M,vector<bool>C);

vector<bool> receive_message(vector<vector<bool>>R){
    int n=R.size();
    vector<bool> C(31);
    for(int i=0;i<31;i++){
        int cnt=0;
        for(int j=0;j<31;j++) cnt+=R[i][j];
        if(cnt>=16) C[i]=1;
        else C[i]=0;
    }
    //for(int i=0;i<31;i++) cout<<C[i]<<' ';
    //cout<<endl;
    vector<bool>ans;
    for(int i=31;i<n-2;i++){
        for(int j=0;j<31;j++){
            if(!C[i]) ans.pb(R[i][j]);
        }
    }
    int use=0;
    for(int i=0;i<31;i++){
        if(!C[i]&&R[n-2][i]) use++;
    }
    for(int i=0;i<31&&use>0;i++){
        if(!C[i]){
            ans.pb(R[n-1][i]);
            use--;
        }
    }
    return ans;
}

vector<bool> send_packet(vector<bool> A);

void send_message(vector<bool>M,vector<bool>C){
    int n=M.size();
    vector<bool> send(31);
    for(int i=0;i<31;i++){
        for(int j=0;j<31;j++) send[j]=C[i];
        send_packet(send);
    }
    int ind=0;
    while(ind+16<n){
        for(int i=0;i<31;i++){
            if(!C[i]){
                send[i]=M[ind];
                ind++;
            }
        }
        send_packet(send);
    }
    int tem=ind;
    for(int i=0;i<31;i++){
        if(!C[i]&&tem<M.size()){
            send[i]=1;
            tem++;
        }else send[i]=0;
    }
    send_packet(send);
    for(int i=0;i<31&&ind<M.size();i++){
        if(!C[i]){
            send[i]=M[ind];
            ind++;
        }
    }
    send_packet(send);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...