QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#341989#8221. 多方计算hos_lyric10 105ms54228kbC++141.7kb2024-03-01 01:42:592024-03-01 01:42:59

Judging History

你现在查看的是最新测评结果

  • [2024-03-01 01:42:59]
  • 评测
  • 测评结果:10
  • 用时:105ms
  • 内存:54228kb
  • [2024-03-01 01:42:59]
  • 提交

answer

#include "mpc.h"

/*
  < 2^M + ... + 2^M + 2^(M-1) + 2^(M-2) + 2^(M-3) + ...
  < 2^M (ceil(log_2(N)) + 2)
*/

// heard statement update
int N, M, logN, loglogN;

int precalc(int n,int m){
  N = n;
  M = m;
  for (logN = 0; !(N <= 1 << logN); ++logN) {}
  for (loglogN = 0; !(logN + 2 <= 1 << loglogN); ++loglogN) {}
  return N + M + loglogN;
}

bool transmit(player &player, int round,int position){
  const int msg = player.last_message;
  auto A = [&](int i) -> int & {
    return player.memory[i];
  };
  // to send early, in base 2^J
  constexpr int J = 30;
  auto B = [&](int i) -> int & {
    return player.memory[2200 + i];
  };
  
  auto addA = [&](int e, int val) -> void {
    A(e) += val;
    for (int f = e; A(f) >= 2; ++f) {
      A(f + 1) += A(f) / 2;
      A(f) %= 2;
    }
  };
  auto addB = [&](int e, int val) -> void {
    B(e/J) += val << (e%J);
    for (int i = e/J; B(i) >= 1 << J; ++i) {
      B(i + 1) += B(i) >> J;
      B(i) &= ((1 << J) - 1);
    }
  };
  
  if (round == 1) {
    // position = logN + 1: e >= M - 1
    for (int e = M - (position - logN); e < M; ++e) {
      A(e) = 0;
      addB(e, 1);
    }
  }
  
  const int d = round - position - 1;
  if (d >= 0) {
    if (msg) addA(d, 1);
    if (position == N) return 0;
    const int a = A(d);
    A(d) = 0;
    return a;
  } else {
    // d = -logN: e = M
    const int e = d - (-logN) + M;
    if (e >= 0) {
      if (msg) (position == N) ? addA(e, 1) : addB(e, 1);
      if (position == N) return 0;
      const int b = B(e/J) >> (e%J) & 1;
      B(e/J) &= ~(1 << (e%J));
      return b;
    } else {
      return 0;
    }
  }
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 8032kb

input:

5 5 3185997250635081508 10243950506680270049

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #2:

score: 0
Wrong Answer

Test #37:

score: 0
Wrong Answer
time: 16ms
memory: 31948kb

input:

1000 1 17833636513278974999 18032835279213373306

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #3:

score: 0
Wrong Answer

Test #73:

score: 0
Wrong Answer
time: 12ms
memory: 30644kb

input:

1000 10 7581650225429700886 16046788410942473709

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #4:

score: 0
Wrong Answer

Test #109:

score: 0
Wrong Answer
time: 20ms
memory: 32540kb

input:

1000 30 15510757929061591914 2629686482095382587

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #5:

score: 10
Accepted

Test #145:

score: 10
Accepted
time: 1ms
memory: 5936kb

input:

3 1000 341353812123787886 3685575517089631424

output:

4123764187658

result:

ok Perfect. 10

Test #146:

score: 10
Accepted
time: 1ms
memory: 5968kb

input:

3 1000 17554024470069985393 14526118928412869541

output:

4123764187658

result:

ok Perfect. 10

Test #147:

score: 10
Accepted
time: 1ms
memory: 5992kb

input:

3 1000 11100872062048687810 2436800177126848628

output:

4123764187658

result:

ok Perfect. 10

Test #148:

score: 10
Accepted
time: 0ms
memory: 5988kb

input:

3 1000 12273008098306225590 16096411110101172825

output:

4123764187658

result:

ok Perfect. 10

Test #149:

score: 10
Accepted
time: 1ms
memory: 5964kb

input:

3 1000 5654804106297455579 15032882241153944630

output:

4123764187658

result:

ok Perfect. 10

Test #150:

score: 10
Accepted
time: 1ms
memory: 5888kb

input:

3 1000 11657166324406481549 9353824690667677565

output:

4123764187658

result:

ok Perfect. 10

Test #151:

score: 10
Accepted
time: 0ms
memory: 6024kb

input:

3 1000 9856996265363358370 1303189576722459924

output:

4123764187658

result:

ok Perfect. 10

Test #152:

score: 10
Accepted
time: 1ms
memory: 5976kb

input:

3 1000 13762958351315737777 17656605426995507653

output:

4123764187658

result:

ok Perfect. 10

Test #153:

score: 10
Accepted
time: 1ms
memory: 5964kb

input:

3 1000 6594820974237499008 8275191558646832971

output:

4123764187658

result:

ok Perfect. 10

Test #154:

score: 10
Accepted
time: 1ms
memory: 5988kb

input:

3 1000 15364608258723563115 6775374271333152271

output:

4123764187658

result:

ok Perfect. 10

Test #155:

score: 10
Accepted
time: 0ms
memory: 5960kb

input:

3 1000 8632788633816311118 11344661582645288445

output:

4123764187658

result:

ok Perfect. 10

Test #156:

score: 10
Accepted
time: 1ms
memory: 5928kb

input:

3 1000 3761871134959282714 6665092712492706442

output:

4123764187658

result:

ok Perfect. 10

Test #157:

score: 10
Accepted
time: 1ms
memory: 5988kb

input:

3 1000 7094498594234606872 8910549019427251768

output:

4123764187658

result:

ok Perfect. 10

Test #158:

score: 10
Accepted
time: 1ms
memory: 5880kb

input:

3 1000 3150940857228445655 13881058163925087748

output:

4123764187658

result:

ok Perfect. 10

Test #159:

score: 10
Accepted
time: 1ms
memory: 5984kb

input:

3 1000 4138134701063904295 1719971509658971853

output:

4123764187658

result:

ok Perfect. 10

Test #160:

score: 10
Accepted
time: 1ms
memory: 5968kb

input:

3 1000 5958659699359151667 2414251605389031835

output:

4123764187658

result:

ok Perfect. 10

Test #161:

score: 10
Accepted
time: 1ms
memory: 5868kb

input:

3 1000 5944678764869264249 12798935463560265075

output:

4123764187658

result:

ok Perfect. 10

Test #162:

score: 10
Accepted
time: 0ms
memory: 6008kb

input:

3 1000 4284102408051741763 14814507977658888488

output:

4123764187658

result:

ok Perfect. 10

Test #163:

score: 10
Accepted
time: 1ms
memory: 5888kb

input:

3 1000 68627333965422180 112502394402464737

output:

4123764187658

result:

ok Perfect. 10

Test #164:

score: 10
Accepted
time: 1ms
memory: 5960kb

input:

3 1000 9425733985639080184 7223503398227154738

output:

4123764187658

result:

ok Perfect. 10

Test #165:

score: 10
Accepted
time: 0ms
memory: 5960kb

input:

3 1000 8943577954292636643 17050920714073219153

output:

4123764187658

result:

ok Perfect. 10

Test #166:

score: 10
Accepted
time: 0ms
memory: 5880kb

input:

3 1000 11496811535444871688 17614364677931546223

output:

4123764187658

result:

ok Perfect. 10

Test #167:

score: 10
Accepted
time: 1ms
memory: 6060kb

input:

3 1000 11326082696967067008 15441004054432712190

output:

4123764187658

result:

ok Perfect. 10

Test #168:

score: 10
Accepted
time: 1ms
memory: 5992kb

input:

3 1000 674874697473693630 12649997796392211087

output:

4123764187658

result:

ok Perfect. 10

Test #169:

score: 10
Accepted
time: 0ms
memory: 5996kb

input:

3 1000 1277251190199972050 14038814491796751538

output:

4123764187658

result:

ok Perfect. 10

Test #170:

score: 10
Accepted
time: 1ms
memory: 5856kb

input:

3 1000 9145151749445284299 14293688652236038951

output:

4123764187658

result:

ok Perfect. 10

Test #171:

score: 10
Accepted
time: 1ms
memory: 5896kb

input:

3 1000 15904416939287794082 14428505338208190980

output:

4123764187658

result:

ok Perfect. 10

Test #172:

score: 10
Accepted
time: 1ms
memory: 5976kb

input:

3 1000 6941291132256775130 12849312109895089494

output:

4123764187658

result:

ok Perfect. 10

Test #173:

score: 10
Accepted
time: 1ms
memory: 5988kb

input:

3 1000 17548422519337327843 202236826264518662

output:

4123764187658

result:

ok Perfect. 10

Test #174:

score: 10
Accepted
time: 0ms
memory: 5964kb

input:

3 1000 17860234706011656272 8403215217493848355

output:

4123764187658

result:

ok Perfect. 10

Test #175:

score: 10
Accepted
time: 1ms
memory: 5924kb

input:

3 1000 13237681186403336364 1756180179264870639

output:

4123764187658

result:

ok Perfect. 10

Test #176:

score: 10
Accepted
time: 1ms
memory: 5972kb

input:

3 1000 10003937773928046600 7429936390634919158

output:

4123764187658

result:

ok Perfect. 10

Test #177:

score: 10
Accepted
time: 1ms
memory: 5964kb

input:

3 1000 14525148579459393729 1812692019584178560

output:

4123764187658

result:

ok Perfect. 10

Test #178:

score: 10
Accepted
time: 1ms
memory: 5960kb

input:

3 1000 9397110039933932416 8176227936526769663

output:

4123764187658

result:

ok Perfect. 10

Test #179:

score: 10
Accepted
time: 1ms
memory: 5936kb

input:

3 1000 5937527883284015772 13220661886981109044

output:

4123764187658

result:

ok Perfect. 10

Test #180:

score: 10
Accepted
time: 1ms
memory: 5956kb

input:

3 1000 16390577403064012729 17586432346005845474

output:

4123764187658

result:

ok Perfect. 10

Subtask #6:

score: 0
Wrong Answer

Test #181:

score: 0
Wrong Answer
time: 1ms
memory: 6036kb

input:

10 1000 18326939717248212778 15447461170187547045

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #7:

score: 0
Wrong Answer

Test #217:

score: 0
Wrong Answer
time: 11ms
memory: 18600kb

input:

500 1000 3911210051670624968 2787181900148297327

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #8:

score: 0
Wrong Answer

Test #253:

score: 0
Wrong Answer
time: 27ms
memory: 32588kb

input:

1000 1000 2442055921391744378 15448328346037637846

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #9:

score: 0
Wrong Answer

Test #289:

score: 0
Wrong Answer
time: 63ms
memory: 44832kb

input:

1500 1500 8660688640427922501 1436138393991664715

output:

4123764187648

result:

points 0.0 Correct Answer. 0

Subtask #10:

score: 0
Wrong Answer

Test #325:

score: 0
Wrong Answer
time: 105ms
memory: 54228kb

input:

2000 2000 6596342253746377097 6195418207254921855

output:

4123764187648

result:

points 0.0 Correct Answer. 0