QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#491428 | #4912. WereYouLast | lifan | 100 ✓ | 4485ms | 5140kb | C++14 | 1.6kb | 2024-07-25 19:27:01 | 2024-07-25 19:27:01 |
Judging History
answer
//
//「意味のないことをたくさんするのが人生なんじゃよ」
//【做许多无意义的事情才是人生呀!】
//「美しく最後を飾りつける暇があるなら最後まで美しく生きようじゃねーか」
//【与其装点自己的终焉,不如漂亮地活到最后。】
//「認めたくないものだな 自分自身の若さ故の過ちというものを」
//【真不想承认啊,因自己年轻而犯下的错误。】
//「天気はあなたで逆転し、世界はあなたで晴れます。」
//【天气因你逆转,世界因你天晴。】
//「美しい秘密をくれました。真夏の夜に眠る美しい夢の中で。」
//【你给我一个绚烂的秘密,沉睡在仲夏夜里的美丽梦境中。】
//「ただ 生活(せいかつ)をしているだけで 哀(かな)しみはそこここに积(つ)もる」
//【明明只是活着,哀伤却无处不在。】
#include <bits/stdc++.h>
using namespace std;
bool query(int);
void modify(int, bool);
bool WereYouLast(int N, int M)
{
if (M == 10)
{
int x = 0;
for (int i = 0; i < M; ++i) if (query(1 + i)) x |= 1 << i;
if (x == (1 << M) - 1) return true;
++x;
for (int i = 0; i < M; ++i) modify(1 + i, x >> i & 1);
return false;
}
else
{
const int E = 31 - __builtin_clz(N);
int x = 0;
for (int i = 0; i < 5; ++i) if (query(1000 + i)) x |= 1 << i;
if (x == E) return true;
const bool res = query(2000 + x);
modify(2000 + x, !res);
x = (x == E - 1) ? E : res ? (x + 1) : 0;
for (int i = 0; i < 5; ++i) modify(1000 + i, x >> i & 1);
return false;
}
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 1ms
memory: 3816kb
input:
1024 10
output:
12345876 10 10
result:
ok Correct Answer. C1 = 10. C2 = 10.
Subtask #2:
score: 20
Accepted
Test #2:
score: 20
Accepted
time: 5ms
memory: 4980kb
input:
65536 100000
output:
12345876 6 6
result:
ok Correct Answer. C1 = 6. C2 = 6.
Subtask #3:
score: 30
Accepted
Test #3:
score: 30
Accepted
time: 71ms
memory: 5016kb
input:
1048576 100000
output:
12345876 6 6
result:
ok Correct Answer. C1 = 6. C2 = 6.
Subtask #4:
score: 40
Accepted
Test #4:
score: 40
Accepted
time: 4485ms
memory: 5140kb
input:
67108864 100000
output:
12345876 6 6
result:
ok Correct Answer. C1 = 6. C2 = 6.