Submission #1239736

#TimeUsernameProblemLanguageResultExecution timeMemory
1239736walizamaneeMessage (IOI24_message)C++20
79.64 / 100
424 ms880 KiB
#include<bits/stdc++.h> #include "message.h" using namespace std; void send_message(vector<bool> M, vector<bool> C) { vector<bool> hea(31 , 1); vector<bool> na(31 , 0); vector<bool> one , two; vector<int> kongula; int lol = 15; for( int z = 15; z <= 30; z++ ) { if( C[z] == 0 ) lol = z; } lol -= 15; for( int z = 0; z < 4; z++ ) { if( (lol & (1 << z)) > 0 ) { two = send_packet(hea); } else two = send_packet(na); } lol += 15; vector<vector<bool>> arr; kongula.clear(); for( int z = 0; z <= 30; z++ ) { if( z != lol ) { one = hea; if( C[z] == 1 ) { one[lol] = 1; } else { one[lol] = 0; // cerr << z << "lol" << "\n"; kongula.push_back(z); } arr.push_back(one); } } /* for( int z = 0; z < (int)kongula.size(); z++ ) { cerr << kongula[z] << " "; } cerr << lol << "\n"; */ kongula.push_back(lol); int siz = (int)M.size(); siz--; // cerr << siz << "\n"; int here = 0; for( int z = 0; z < 30; z++ ) { if( z == 0 ) { for( int y = 0; y <= 9 ; y++ ) { if( (siz & (1 << y)) == 0 ) { arr[z][kongula[y]] = 0; } else arr[z][kongula[y]] = 1; } for( int y = 10; y < 15; y++ ) { if( here <= siz ) { if( M[here] == 1 ) arr[z][kongula[y]] = 1; else arr[z][kongula[y]] = 0; here++; } } } else{ for( int y = 0; y < 15; y++ ) { if( here <= siz ) { if( M[here] == 1 ) arr[z][kongula[y]] = 1; else arr[z][kongula[y]] = 0; here++; } } } } kongula.push_back(lol); sort( kongula.begin() , kongula.end() ); while( here <= siz ) { one = hea; for( int y = 0; y < 16; y++ ) { if( here <= siz ) { if( M[here] == 1 ) one[kongula[y]] = 1; else one[kongula[y]] = 0; here++; } } arr.push_back(one); } for( int z = 0; z < (int)arr.size(); z++ ) { two = send_packet(arr[z]); } } vector<bool> receive_message(vector<vector<bool>> R) { int cnt; int lol = 15; for( int z = 0; z < 4; z++ ) { cnt = 0; for( int y = 0; y < 31; y++ ) { if( R[z][y] == 1 ) cnt++; } if( cnt >= 16 ) { lol += (1 << z); } } vector<int> kongula; kongula.clear(); int here = 0; for( int z = 4; z < 34; z++ ) { if( R[z][lol] == 0 ) { kongula.push_back(here); } here++; if( here == lol ) here++; } int siz = 0; here = 0; vector<bool> ans; ans.clear(); for( int z = 4; z < 34; z++ ) { if( z == 4 ) { for( int y = 0; y <= 9; y++ ) { if( R[z][kongula[y]] == 1 ) siz += (1 << y); } for( int y = 10; y < 15; y++ ) { if( here <= siz ) { if( R[z][kongula[y]] == 1 ) ans.push_back(1); else ans.push_back(0); here++; } } } else{ for( int y = 0; y < 15; y++ ) { if( here <= siz ) { if( R[z][kongula[y]] == 1 ) ans.push_back(1); else ans.push_back(0); here++; } } } } kongula.push_back(lol); sort( kongula.begin() , kongula.end() ); for( int z = 34; z < (int)R.size(); z++ ) { for( int y = 0; y < 16; y++ ) { if( here <= siz ) { if( R[z][kongula[y]] == 1 ) ans.push_back(1); else ans.push_back(0); here++; } } } // cerr << siz << "\n"; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...