Submission #1228078

#TimeUsernameProblemLanguageResultExecution timeMemory
1228078PVM_pvmMessage (IOI24_message)C++20
100 / 100
399 ms852 KiB
#include "message.h" #include<bits/stdc++.h> using namespace std; void send_message(vector<bool> M, vector<bool> C) { vector<vector<bool>> msg(66); for (int q=0;q<66;q++) msg[q].resize(31); int sl[31]; int lst=0; for (int q=0;q<31;q++) { if (!C[q]) { lst=q+31; break; } } //for (int q=0;q<31;q++) cout<<q<<" "<<C[q]<<"\n"; for (int q=30;q>=0;q--) { if (!C[q]) { sl[q]=lst-q; lst=q; //cout<<q<<" "<<sl[q]<<"\n"; } } for (int q=0;q<31;q++) { if (C[q]) continue; for (int w=0;w<(sl[q]-2);w++) msg[w][q]=0; msg[ sl[q]-1 ][q]=1; } reverse(M.begin(),M.end()); M.push_back(1); while (M.size()<1025) M.push_back(0); reverse(M.begin(),M.end()); int cur=0; for (int q=0;q<66;q++) { for (int w=0;w<31;w++) { if (C[w]) continue; if (q<sl[w]) continue; msg[q][w]=M[cur]; cur++; } send_packet(msg[q]); } } vector<bool> receive_message(vector<vector<bool>> R) { vector<bool> otg; int sl[31]; for (int q=0;q<31;q++) sl[q]=q; for (int q=0;q<31;q++) { for (int w=0;w<66;w++) { if (R[w][q]==1) { sl[q]=(q+w+1)%31; break; } } } bool b[31]; vector<int> cic; for (int q=0;q<31;q++) { for (int w=0;w<31;w++) b[w]=0; cic.clear(); int cur=q; while (true) { b[cur]=1; cic.push_back(cur); if (b[ sl[cur] ]) { if (sl[cur]==q) { break; } else { cic.clear(); break; } } cur=sl[cur]; } if (cic.size()==16) { break; } } bool rzk[31]; for (int q=0;q<31;q++) rzk[q]=0; for (int q=0;q<cic.size();q++) rzk[ cic[q] ]=1; for (int q=0;q<31;q++) { sl[q]=(sl[q]+31-q)%31; } bool dl=false; for (int q=0;q<66;q++) { for (int w=0;w<31;w++) { if (!rzk[w]) continue; if (q<sl[w]) continue; if (!dl) { if (R[q][w]==1) dl=true; } else { otg.push_back(R[q][w]); } } } return otg; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...