QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#695914#9237. MessageMrPython76.159 235ms4116kbC++202.9kb2024-10-31 21:02:592024-10-31 21:03:08

Judging History

This is the latest submission verdict.

  • [2024-10-31 21:03:08]
  • Judged
  • Verdict: 76.159
  • Time: 235ms
  • Memory: 4116kb
  • [2024-10-31 21:02:59]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
vector<bool> safeWrite(vector<bool> const& a, vector<bool> const& c) {
  vector<bool> res(31);
  size_t p = 0;
  for (size_t i = 0; i < 31; ++i) res[i] = (!c[i] ? a[p++] : 0);
  return res;
}
vector<bool> safeRead(vector<bool> const& a, vector<bool> const& c) {
  vector<bool> res;
  for (size_t i = 0; i < 31; ++i)
    if (!c[i]) res.emplace_back(a[i]);
  return res;
}
vector<bool> send_packet(vector<bool> A);
void send_message(vector<bool> a, vector<bool> c) {
  vector<size_t> poses;
  for (size_t i = 0; i < 31; ++i)
    if (!c[i]) poses.emplace_back(i);
  for (size_t i = 0; i < 4; ++i)
    send_packet(vector<bool>(31, (poses[0] >> i) & 1));
  for (size_t i = 0; i < 4; ++i) {
    vector<bool> dat(16);
    for (size_t j = 1; j < 16; ++j)
      dat[j - 1] = ((poses[j] - poses[j - 1] - 1) >> i) & 1;
    dat[15] = ((a.size() % 16) >> i) & 1;
    send_packet(safeWrite(dat, c));
  }
  vector<bool>::iterator it = a.begin(), jt = it + 16;
  for (; jt < a.end(); it += 16, jt += 16)
    send_packet(safeWrite(vector<bool>(it, jt), c));
  {
    vector<bool> lst(it, a.end());
    lst.resize(16);
    send_packet(safeWrite(lst, c));
  }
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> r) {
  reverse(r.begin(), r.end());
  size_t rev = 0;
  vector<size_t> poses(16);
  for (size_t j = 0; j < 4; ++j) {
    poses[0] |= unsigned(count(r.back().begin(), r.back().end(), true) >= 16)
                << j;
    r.pop_back();
  }
  for (size_t i = 1; i < 16; ++i) {
    for (size_t j = 0; j < 4; ++j)
      poses[i] |= unsigned(r.rbegin()[j][poses[i - 1]]) << j;
    poses[i] += poses[i - 1] + 1;
  }
  for (size_t j = 0; j < 4; ++j) rev |= unsigned(r.rbegin()[j][poses[15]]) << j;
  if (rev == 0) rev = 16;
  r.erase(r.end() - 4, r.end());
  vector<bool> c(31, true);
  for (size_t i : poses) c[i] = false;
  vector<bool> ans;
  while (r.size() > 1) {
    vector<bool> h = safeRead(r.back(), c);
    ans.insert(ans.end(), h.begin(), h.end());
    r.pop_back();
  }
  {
    vector<bool> h = safeRead(r.back(), c);
    ans.insert(ans.end(), h.begin(), h.begin() + rev);
  }
  return ans;
}

#ifndef ONLINE_JUDGE
vector<vector<bool>> packets;
vector<bool> d(31);
mt19937 rd((random_device())());
uniform_int_distribution<unsigned short int> rdb(0, 1);
vector<bool> send_packet(vector<bool> A) {
  assert(A.size() == 31);
  for (size_t i = 0; i < 31; ++i)
    if (d[i]) A[i] = rdb(rd);
  packets.emplace_back(A);
  return A;
}
int main(void) {
  size_t n;
  cin >> n;
  vector<bool> dat(n);
  for (auto i : dat) {
    char c;
    cin >> c;
    i = c == '1';
  }
  for (auto i : d) {
    char c;
    cin >> c;
    i = c == '1';
  }
  send_message(dat, d);
  vector<bool> res = receive_message(packets);
  assert(res == dat);
  cerr << packets.size();
}
#endif

詳細信息

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 36ms
memory: 3760kb

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: 33ms
memory: 3812kb

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: 18ms
memory: 4008kb

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: 40ms
memory: 4116kb

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: 20ms
memory: 3848kb

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: 21ms
memory: 3812kb

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: 20ms
memory: 3756kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Subtask #2:

score: 66.159
Acceptable Answer

Test #8:

score: 66.159
Acceptable Answer
time: 204ms
memory: 4016kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #9:

score: 66.159
Acceptable Answer
time: 106ms
memory: 4044kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #10:

score: 66.159
Acceptable Answer
time: 210ms
memory: 4044kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #11:

score: 66.159
Acceptable Answer
time: 235ms
memory: 3728kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #12:

score: 69.642
Acceptable Answer
time: 186ms
memory: 4012kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7738

result:

points 0.7738

Test #13:

score: 66.159
Acceptable Answer
time: 134ms
memory: 3816kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #14:

score: 66.159
Acceptable Answer
time: 99ms
memory: 4048kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #15:

score: 66.159
Acceptable Answer
time: 133ms
memory: 3820kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #16:

score: 66.159
Acceptable Answer
time: 148ms
memory: 4016kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351

Test #17:

score: 90
Accepted
time: 19ms
memory: 4004kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #18:

score: 90
Accepted
time: 38ms
memory: 3756kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #19:

score: 90
Accepted
time: 55ms
memory: 3736kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #20:

score: 90
Accepted
time: 95ms
memory: 3844kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #21:

score: 90
Accepted
time: 83ms
memory: 3716kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #22:

score: 90
Accepted
time: 148ms
memory: 3856kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #23:

score: 90
Accepted
time: 104ms
memory: 3812kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #24:

score: 90
Accepted
time: 106ms
memory: 3844kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #25:

score: 90
Accepted
time: 155ms
memory: 3768kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #26:

score: 69.642
Acceptable Answer
time: 192ms
memory: 3804kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7738

result:

points 0.7738

Test #27:

score: 66.159
Acceptable Answer
time: 205ms
memory: 4052kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7351

result:

points 0.7351