Submission #1133184

#TimeUsernameProblemLanguageResultExecution timeMemory
1133184irmuunMessage (IOI24_message)C++20
100 / 100
382 ms852 KiB
#include <bits/stdc++.h> #include "message.h" using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() // send_packet() void send_message(vector<bool>M,vector<bool>C){ vector<int>h(31,0); for(int i=0;i<31;i++){ if(C[i]==0){ for(int j=1;j<=31;j++){ if(C[(i+j)%31]==0){ h[i]=j; break; } } } } bool last=M.back(); last^=true; while(M.size()<1025){ M.pb(last); } int cur=0; vector<vector<bool>>R(66,vector<bool>(31)); for(int i=0;i<31;i++){ if(C[i]==0){ R[h[i]-1][i]=1; for(int j=h[i];j<66;j++){ R[j][i]=M[cur]; cur++; } } } assert(cur==1025); for(int i=0;i<66;i++){ send_packet(R[i]); } return; } vector<bool>receive_message(vector<vector<bool>>R){ vector<int>h(31,1); for(int i=0;i<31;i++){ for(int j=0;j<66;j++){ if(R[j][i]==0){ h[i]++; } else{ break; } } } vector<bool>C(31,1); for(int i=0;i<31;i++){ vector<int>v; v.pb(i); int sum=0; for(int j=0;j<16;j++){ sum+=h[v.back()]; v.pb((v.back()+h[v.back()])%31); } if(sum==31){ C[i]=0; } } vector<bool>M; for(int i=0;i<31;i++){ if(C[i]==0){ for(int j=h[i];j<66;j++){ M.pb(R[j][i]); } } } bool last=M.back(); while(!M.empty()&&M.back()==last){ M.pop_back(); } return M; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...