Submission #1190295

#TimeUsernameProblemLanguageResultExecution timeMemory
1190295epicci23메시지 (IOI24_message)C++20
83.31 / 100
404 ms852 KiB
#include "bits/stdc++.h" #include "message.h" //#define int long long #define all(v) v.begin() , v.end() #define sz(a) (int)a.size() using namespace std; bool cogunluk(vector<bool> cur){ int hm1 = count(all(cur), 1); int hm0 = count(all(cur), 0); if(hm0 > hm1) return 0; return 1; } void send_message(vector<bool> M, vector<bool> C){ vector<bool> A(31, 0); vector<bool> bir(31, 1), sif(31, 0); int lf = 0; for(int i = 0; i < 31; i++){ if(C[i] == 1) continue; for(int j = 0; j < 4; j++) if(i>>j&1) lf += (1 << j); break; } for(int i = 0; i < 4; i++){ if(lf>>i&1) send_packet(bir); else send_packet(sif); } M.push_back(1); int k = sz(M); // mesaji ve bitleri ayni anda ogret int ptr = 0; for(int i = lf + 1; i < 30; i++){ A.assign(31, 0); for(int j = 0; j < 31; j++){ if(C[j] == 1) continue; if(j == lf) A[j] = C[i]; else if(ptr < k) A[j] = M[ptr++]; } send_packet(A); } int rem = k - ptr; for(int i = 0; i < (rem + 15) / 16; i++){ A.assign(31, 0); for(int j = 0; j < 31; j++){ if(C[j] == 0 && ptr < k) A[j] = M[ptr++]; } send_packet(A); } } vector<bool> receive_message(vector<vector<bool>> R){ vector<bool> C(31, 0); int kac0 = 0, lf = 0; for(int i = 0; i < 4; i++) if(cogunluk(R[i])) lf+=(1<<i); for(int i = 0; i < lf; i++) C[i] = 1; kac0++; int row = 4; for(int i = lf + 1; i < 30; i++){ if(R[row++][lf]) C[i] = 1; else kac0++; } if(kac0 == 15) C[30] = 0; else C[30] = 1; kac0++; vector<bool> res; for(int i = 4; i < sz(R); i++){ for(int j = 0; j < 31; j++){ if(C[j] == 1) continue; if(i < row && j == lf) continue; res.push_back(R[i][j]); } } while(res.back() == 0) res.pop_back(); res.pop_back(); return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...