Submission #1103075

#TimeUsernameProblemLanguageResultExecution timeMemory
1103075aaaaaarroz메시지 (IOI24_message)C++17
29.32 / 100
1699 ms1104 KiB
#include <bits/stdc++.h>
using namespace std;
vector<bool> send_packet(vector<bool> A);
void send_message(vector<bool> M, vector<bool> C){
	for(int i=0;i<30;i++){
		if(C[i]==true){
			vector<bool>paquete(31,0);
			send_packet(paquete);
		}
		else{
			vector<bool>paquete(31,1);
			send_packet(paquete);
		}
	}
	vector<bool>numero(31,0);
	int bit_real=0;
	for(int i=0;i<31;i++){
		if(C[i]==1){
			continue;
		}
		if(((1<<bit_real)&(M.size()))){
			numero[i]=1;
		}
		bit_real++;
	}
	send_packet(numero);
	vector<bool>envio;
	int pos=0;
	while(pos<M.size()){
		if(C[envio.size()]==0){
			envio.push_back(M[pos]);
			pos++;
		}
		else{
			envio.push_back(0);
		}
		if(envio.size()==31){
			send_packet(envio);
			envio.clear();
		}
	}
	while(envio.size()<31){
		envio.push_back(false);
		if(envio.size()==31){
			send_packet(envio);
			break;
		}
	}
}
vector<bool> receive_message(vector<vector<bool>> R){
	vector<bool>funciona(31,false);
	int funcionales=0;
	for(int i=0;i<30;i++){
		int votos=0;
		for(int j=0;j<31;j++){
			if(R[i][j]){
				votos++;
			}
		}
		if(votos>15){
			funcionales++;
			funciona[i]=true;
		}
	}
	if(funcionales==16){
		funciona[30]=0;
	}
	else{
		funciona[30]=1;
	}
	int bit_real=0;
	int largo=0;
	for(int j=0;j<30;j++){
		if(funciona[j]){
			if(R[30][j]){
				largo+=(1<<bit_real);
			}
			bit_real++;
		}
	}
	vector<bool>sec;
	for(int i=31;i<R.size();i++){
		for(int j=0;j<31;j++){
			if(funciona[j]){
				sec.push_back(R[i][j]);
			}
		}
	}
	while(sec.size()>largo){
		sec.pop_back();
	}
	return sec;
}

Compilation message (stderr)

message.cpp: In function 'void send_message(std::vector<bool>, std::vector<bool>)':
message.cpp:29:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  while(pos<M.size()){
      |        ~~~^~~~~~~~~
message.cpp: In function 'std::vector<bool> receive_message(std::vector<std::vector<bool> >)':
message.cpp:82:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<bool> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |  for(int i=31;i<R.size();i++){
      |               ~^~~~~~~~~
message.cpp:89:18: warning: comparison of integer expressions of different signedness: 'std::vector<bool>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   89 |  while(sec.size()>largo){
      |        ~~~~~~~~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...