QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#885481#9237. MessageASnown10 115ms3840kbC++201.8kb2025-02-06 15:52:132025-02-06 15:52:14

Judging History

This is the latest submission verdict.

  • [2025-02-06 15:52:14]
  • Judged
  • Verdict: 10
  • Time: 115ms
  • Memory: 3840kb
  • [2025-02-06 15:52:13]
  • Submitted

answer

#include<bits/stdc++.h>
#include "message.h"
using namespace std;
const int pL=16;
void send_message(vector<bool> M, vector<bool> C) {
   mt19937 rnd(892348892);
   vector<bitset<pL>> pri(31);
   for(int i=0;i<=30;i++) pri[i]=rnd();
   vector<int> pos;
   for(int i=0;i<=30;i++) if(!C[i]) pos.emplace_back(i);
   assert(pos.size()==16);
   for(int i=0;i<=30;i++) {
      vector<bool> A(31,C[i]);
      send_packet(A);
   }
   // for(int l=0;l<pL;l++) {
   //    vector<bool> A(31);
   //    for(int i=0;i<=30;i++) A[i]=pri[i][l];
   //    send_packet(A);
   // }
   int S=M.size();
   bitset<16> bS=S;
   vector<bool> A(31);
   for(int i=0;i<16;i++) A[pos[i]]=bS[i];
   send_packet(A);
   M.resize(S+15);
   for(int i=0;i<S;i+=16) {
      for(int j=0;j<16;j++) A[pos[j]]=M[i+j];
      send_packet(A);
   }
}

vector<bool> receive_message(vector<vector<bool>> R) {
   int get_packet_pos=0;
   auto get_packet = [&]() {
      assert(get_packet_pos!=R.size());
      return R[get_packet_pos++];
   };
   mt19937 rnd(892348892);
   vector<bitset<pL>> pri(31);
   for(int i=0;i<=30;i++) pri[i]=rnd();
   vector<bool> C(31);
   // vector<bitset<pL>> get(31);
   // for(int l=0;l<pL;l++) {
   //    vector<bool> A=get_packet();
   //    for(int i=0;i<=30;i++) get[i][l]=A[i];
   // }
   // for(int i=0;i<=30;i++) C[i]=!(get[i]==pri[i]);
   for(int i=0;i<=30;i++) {
      int cnt[2]{};
      auto A=get_packet();
      for(int j=0;j<=30;j++) ++cnt[A[j]];
      C[i]=(cnt[0]<cnt[1]);
   }
   vector<int> pos;
   for(int i=0;i<=30;i++) if(!C[i]) pos.emplace_back(i);
   assert(pos.size()==16);
   int S=0;
   auto A=get_packet();
   for(int i=0;i<16;i++) S|=A[pos[i]]<<i;
   vector<bool> M(S);
   for(int i=0;i<S;i+=16) {
      auto A=get_packet();
      for(int j=0;j<16;j++) if(i+j<S) M[i+j]=A[pos[j]];
   }
   return M;
}

详细

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 115ms
memory: 3840kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #2:

score: 10
Accepted
time: 85ms
memory: 3840kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #3:

score: 10
Accepted
time: 74ms
memory: 3712kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #4:

score: 10
Accepted
time: 100ms
memory: 3840kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #5:

score: 10
Accepted
time: 70ms
memory: 3712kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #6:

score: 10
Accepted
time: 52ms
memory: 3712kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #7:

score: 10
Accepted
time: 58ms
memory: 3840kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Subtask #2:

score: 0
Instance #1 Time Limit Exceeded

Test #8:

score: 0
Instance #1 Time Limit Exceeded

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.2146

result: