QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#559878 | #9237. Message | yyyyxh# | 85.74 | 232ms | 4068kb | C++23 | 2.3kb | 2024-09-12 10:10:03 | 2024-09-12 10:10:05 |
Judging History
answer
#include "message.h"
#include <cstdio>
#include <algorithm>
using namespace std;
typedef vector<bool> vb;
namespace GO{
int c[31][16];
int encode(int cur){
int res=0;
for(int x=29;~x;--x)
if(cur>>x&1) res+=c[x][16-__builtin_popcount(cur>>x)];
return res;
}
int decode(int cur){
int res=0;
for(int x=29;~x;--x){
int val=c[x][15-__builtin_popcount(res>>x)];
if(cur>=val) cur-=val,res|=(1<<x);
}
return res;
}
void init(){
for(int i=0;i<=30;++i){
c[i][0]=1;
for(int j=1;j<=15&&j<=i;++j) c[i][j]=c[i-1][j]+c[i-1][j-1];
}
}
}
void send_message(vb M,vb C){
GO::init();
int fir=0;
for(int i=0;i<31;++i) if(!C[i]){fir=i;break;}
if(fir==15){
vector<vb> R(65,vb(31));
int pp=0,p=15;
auto add=[&](bool x)->void{
R[pp][p++]=x;
if(p==31) p=15,++pp;
};
for(int i=M.size();i<1024;++i) add(0);
add(1);for(bool x:M) add(x);
for(int i=0;i<65;++i) send_packet(R[i]);
}
else{
int k=__lg(15^fir);
for(int i=0;i<k;++i) send_packet(vb(31,fir>>i&1));
int p=0;
vector<vb> R(66,vb(31));
int cur=0;
for(int i=1;i<31;++i) if(!C[i]&&i!=fir) cur|=(1<<(i-1));
cur=GO::encode(cur);
auto add=[&](bool x)->void{
R[p++][fir]=x;
if(p==66){
p=0;++fir;
while(fir<31&&C[fir]) ++fir;
}
};
for(int i=0;i<28;++i) add(cur>>i&1);
for(int i=M.size();i<1024;++i) add(0);
add(1);for(bool x:M) add(x);
for(int i=0;i<66;++i) send_packet(R[i]);
}
}
vb receive_message(vector<vb> R){
GO::init();
if(R.size()==65lu){
int p=15,pp=0;
auto qry=[&]()->bool{
bool val=R[pp][p++];
if(p==31) p=15,++pp;
return val;
};
int len=1024;
while(!qry()) --len;
vb res(len);
for(int i=0;i<len;++i) res[i]=qry();
return res;
}
else{
int k=R.size()-66;
vb C(31);
int fir=0;
for(int i=k+1;i<4;++i) fir|=(1<<i);
for(int i=0;i<k;++i){
int cnt=0;
for(int x:R[i]) if(x) ++cnt;
if(cnt>15) fir|=(1<<i);
}
C[fir]=1;
int p=k;
auto qry=[&]()->bool{
bool val=R[p++][fir];
if(p==k+66){
p=k;++fir;
while(!C[fir]) ++fir;
}
return val;
};
int cur=0;
for(int i=0;i<28;++i) if(qry()) cur|=(1<<i);
cur=GO::decode(cur);
for(int i=0;i<30;++i) if(cur>>i&1) C[i+1]=1;
int len=1024;
while(!qry()) --len;
vb res(len);
for(int i=0;i<len;++i) res[i]=qry();
return res;
}
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 8.574
Acceptable Answer
Test #1:
score: 8.574
Acceptable Answer
time: 226ms
memory: 3760kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #2:
score: 8.574
Acceptable Answer
time: 171ms
memory: 4004kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #3:
score: 8.574
Acceptable Answer
time: 200ms
memory: 3732kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #4:
score: 8.574
Acceptable Answer
time: 172ms
memory: 3672kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #5:
score: 8.574
Acceptable Answer
time: 120ms
memory: 4068kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #6:
score: 8.574
Acceptable Answer
time: 101ms
memory: 4000kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #7:
score: 8.574
Acceptable Answer
time: 127ms
memory: 3792kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Subtask #2:
score: 77.166
Acceptable Answer
Test #8:
score: 77.166
Acceptable Answer
time: 211ms
memory: 3792kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #9:
score: 77.166
Acceptable Answer
time: 129ms
memory: 3900kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #10:
score: 77.166
Acceptable Answer
time: 191ms
memory: 3792kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #11:
score: 77.166
Acceptable Answer
time: 138ms
memory: 4068kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #12:
score: 77.166
Acceptable Answer
time: 224ms
memory: 3800kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #13:
score: 77.166
Acceptable Answer
time: 150ms
memory: 3728kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #14:
score: 77.166
Acceptable Answer
time: 76ms
memory: 3740kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #15:
score: 77.166
Acceptable Answer
time: 115ms
memory: 3816kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #16:
score: 77.166
Acceptable Answer
time: 184ms
memory: 3668kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #17:
score: 77.166
Acceptable Answer
time: 149ms
memory: 3796kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #18:
score: 77.166
Acceptable Answer
time: 112ms
memory: 3964kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #19:
score: 77.166
Acceptable Answer
time: 165ms
memory: 3796kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #20:
score: 77.166
Acceptable Answer
time: 152ms
memory: 3968kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #21:
score: 77.166
Acceptable Answer
time: 155ms
memory: 4008kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #22:
score: 77.166
Acceptable Answer
time: 170ms
memory: 3964kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #23:
score: 77.166
Acceptable Answer
time: 232ms
memory: 4064kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #24:
score: 77.166
Acceptable Answer
time: 162ms
memory: 3748kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #25:
score: 77.166
Acceptable Answer
time: 146ms
memory: 3820kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #26:
score: 77.166
Acceptable Answer
time: 167ms
memory: 4000kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574
Test #27:
score: 77.166
Acceptable Answer
time: 155ms
memory: 3932kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.8574
result:
points 0.8574