Submission #1248525

#TimeUsernameProblemLanguageResultExecution timeMemory
1248525qwerasdfzxclMessage (IOI24_message)C++20
0 / 100
353 ms840 KiB
#include "message.h" #include <bits/stdc++.h> using namespace std; using ll = long long; void send_message(std::vector<bool> M, std::vector<bool> C) { vector<int> A; for (int i=0;i<31;i++) if (!C[i]) A.push_back(i); A.push_back(A[0] + 31); vector<vector<bool>> ans(31); for (int i=0;i<16;i++){ for (int j=0;j<A[i+1]-A[i]-1;j++) ans[A[i]].push_back(false); ans[A[i]].push_back(true); } M.push_back(true); for (int i=0,j=0;i<16;i++){ while(ans[A[i]].size() < 66){ if (j < (int)M.size()) ans[A[i]].push_back(M[j++]); else ans[A[i]].push_back(false); } } for (int i=0;i<31;i++) ans[i].resize(66); for (int i=0;i<66;i++){ vector<bool> V; for (int j=0;j<31;j++) V.push_back(ans[j][i]); send_packet(V); } } std::vector<bool> receive_message(std::vector<std::vector<bool>> R) { vector<int> P(31); for (int i=0;i<31;i++){ P[i] = i+1; for (int j=0;j<66;j++){ if (R[j][i]) break; P[i]++; } P[i] %= 31; } for (int i=0;i<31;i++){ vector<int> cyc; for (int j=i;find(cyc.begin(), cyc.end(), j)==cyc.end();j=P[j]) cyc.push_back(j); cyc.erase(cyc.begin(), find(cyc.begin(), cyc.end(), P[cyc.back()])); if (cyc.size() == 16){ sort(cyc.begin(), cyc.end()); vector<bool> M; for (int x=0;x<16;x++){ for (int y=0,f=0;y<66;y++){ if (R[y][x] && !f) f = 1; else if (f) M.push_back(R[y][x]); } } while(!M.back()) M.pop_back(); M.pop_back(); return M; } } assert(0); return {}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...