Submission #1246666

#TimeUsernameProblemLanguageResultExecution timeMemory
12466662008Message (IOI24_message)C++20
0 / 100
185 ms848 KiB
#include "message.h" using namespace std; #include<bits/stdc++.h> #include<cmath> string binary15(int n) { int clone = n; string bin; bin.push_back(clone>7); clone=clone%8; bin.push_back(clone>3); clone=clone%4; bin.push_back(clone>1); clone=clone%2; bin.push_back(clone>0); return bin; } string binary1023(int n) { int clone = n; string bin; bin.push_back(clone>511); clone=clone%512; bin.push_back(clone>255); clone=clone%256; bin.push_back(clone>127); clone=clone%128; bin.push_back(clone>63); clone=clone%64; bin.push_back(clone>31); clone=clone%32; bin.push_back(clone>15); clone=clone%16; bin.push_back(clone>7); clone=clone%8; bin.push_back(clone>3); clone=clone%4; bin.push_back(clone>1); clone=clone%2; bin.push_back(clone>0); return bin; } int roof(float f) { int floor = f; if (f==floor) { return f; } else { return f+1; } } void send_message(std::vector<bool> M, std::vector<bool> C) { std::vector<bool> A(31, 0); const vector<bool> zero(31,0); const vector<bool> one(31,1); int S=(int)M.size(); vector<int>spaces; for (int i=0; i<31; i++) { if (C[i]==0) { A=zero; spaces.push_back(i); } else { A=one; } send_packet(A); } A=zero; for (int i=0; i<10; i++) { A[spaces[i]]=binary1023(S-1)[i]; } send_packet(A); int times = roof(S/16), counting = 0; for (int i=0; i<times; i++) { A=one; if (C[i]==0) { A[i]=M[counting]; counting++; } send_packet(A); } } bool read(vector<bool> V) { int countzero=0, countone=0, thesize=V.size(); for (int i=0; i<thesize; i++) { if (V[i] == 0) { countzero++; } else { countone++; } } return countone>countzero; } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { int rsize = R.size(); vector<int>safe; vector<bool>solution; int lenght=0, sofar=0; for (int i=0; i<31; i++) { if (read(R[i])==1) { safe.push_back(i); } } for (int i=0; i<10; i++) { lenght+=R[31][safe[i]]*pow(2,9-i); } for (int i=32; i<rsize; i++) { for (int j=0; j<16; j++) { if (sofar<lenght) { solution.push_back(R[i][safe[j]]); sofar++; } } } return solution; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...