Submission #1359922

#TimeUsernameProblemLanguageResultExecution timeMemory
1359922coderg300711Message (IOI24_message)C++20
0 / 100
116 ms784 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define pll pair<long long,long long>
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#include "message.h"

void send_message(V<bool> M,V<bool> C){
int n=sz(M);
FOR(i,31){
	V<bool> v(31,C[i]);
	send_packet(v);
}
V<bool> bits;
FOR(i,10){
bits.pb((n>>i)&1);
}
each(b,M)bits.pb(b);
V<int> safe;
FOR(i,31){
	if(!C[i])safe.pb(i);
}
int ptr=0;
while(ptr<sz(bits)){
	V<bool> packet(31,0);
	each(id,safe){
		while(ptr<sz(bits))packet[id]=bits[ptr++];
	}
	send_packet(packet);
}
}

V<bool> receive_message(V<V<bool>> R){
	V<bool> C(31);
	V<int> safe;
	FOR(i,31){
		int ones=0;
		FOR(j,31){
			if(R[i][j])ones++;
		}
		if(ones>=16)C[i]=1;
		else{
			C[i]=0;
			safe.pb(i);
		}
	}
	V<int> bits;
	F(i,31,sz(R)){
		each(id,safe)bits.pb(R[i][id]);
	}
	int siz=0;
	FOR(i,10){
		if(bits[i])siz|=(1<<i);
	}
	V<bool> M;
	FOR(i,siz)M.pb(bits[i+10]);
	return M;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...