Submission #1130400

#TimeUsernameProblemLanguageResultExecution timeMemory
1130400StefanSebezMessage (IOI24_message)C++20
100 / 100
629 ms848 KiB
#include <bits/stdc++.h> #include "message.h" using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double const int M=31; void send_message(std::vector<bool> A, std::vector<bool> C){ vector<int>idx;int trenutak[M+5]={0}; for(int i=0;i<M;i++) if(!C[i]) idx.pb(i); for(int i=1;i<idx.size();i++) trenutak[idx[i-1]]=idx[i]-idx[i-1]; trenutak[idx.back()]=M-(idx.back()-idx[0]); reverse(A.begin(),A.end()); A.pb(1);while(A.size()<1025) A.pb(0); reverse(A.begin(),A.end()); for(int i=0,k=0;i<A.size();k++){ vector<bool>temp(M,0); for(int j=0;j<M&&i<A.size();j++){ if(C[j]==1) continue; if(trenutak[j]==k+1) temp[j]=1; else if(k+1>trenutak[j]) temp[j]=A[i++]; } send_packet(temp); } } std::vector<bool> receive_message(std::vector<std::vector<bool>> R){ vector<bool>res,C(M,1); int sledeci[M+10]; for(int j=0;j<M;j++){ sledeci[j]=j+1; for(int i=0;i<R.size();i++) if(R[i][j]==1){sledeci[j]+=i;break;} sledeci[j]%=M; } for(int i=0;i<M;i++){ int u=i,ct=0; bool was[M+10]={false}; while(!was[u]){ was[u]=true; u=sledeci[u]; ct++; } if(ct==16) C[i]=0; } bool bul[M+10]={false}; for(int I=0;I<R.size();I++){ vector<bool>temp=R[I]; for(int j=0;j<M&&res.size()<1025;j++){ if(C[j]==1) continue; if(bul[j]) res.pb(temp[j]); if(temp[j]) bul[j]=true; } } reverse(res.begin(),res.end()); while(!res.back()) res.pop_back();res.pop_back(); reverse(res.begin(),res.end()); return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...