QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#341989 | #8221. 多方计算 | hos_lyric | 10 | 105ms | 54228kb | C++14 | 1.7kb | 2024-03-01 01:42:59 | 2024-03-01 01:42:59 |
Judging History
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