QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#491428#4912. WereYouLastlifan100 ✓4485ms5140kbC++141.6kb2024-07-25 19:27:012024-07-25 19:27:01

Judging History

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

  • [2024-07-25 19:27:01]
  • 评测
  • 测评结果:100
  • 用时:4485ms
  • 内存:5140kb
  • [2024-07-25 19:27:01]
  • 提交

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.