QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#506558#4912. WereYouLastA_box_of_yogurt100 ✓3991ms4996kbC++14835b2024-08-05 19:26:052024-08-05 19:26:06

Judging History

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

  • [2024-08-05 19:26:06]
  • 评测
  • 测评结果:100
  • 用时:3991ms
  • 内存:4996kb
  • [2024-08-05 19:26:05]
  • 提交

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 pos = 0;
		for(int i = 1; i <= m; ++i) {
			pos <<= 1;
			pos |= query(i);
		}
		if(++pos == n) return true;
		for(int i = m; i && pos; --i, pos >>= 1) {
			modify(i, pos & 1);
		}
		return 0;
	}
	int len = __lg(n), pos = 0;
	for(int i = 1; i <= 5; ++i) {
		pos <<= 1;
		pos |= query(i);
	}
	if(++pos == 32) return true;
	if(query(5 + pos)) {
		modify(5 + pos, 0);
		int t = pos;
		for(int i = 5; i && t; --i, t >>= 1) {
			modify(i, t & 1);
		}
	}
	else {
		if(pos == len) {
			for(int i = 1; i <= 5; ++i) {
				modify(i, 1);
			}
		}
		else {
			modify(5 + pos, 1);
			for(int i = 1; i <= 5; ++i) {
				modify(i, 0);
			}
		}
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 10
Accepted

Test #1:

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

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: 4960kb

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: 64ms
memory: 4984kb

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: 3991ms
memory: 4996kb

input:

67108864 100000

output:

12345876 6 6

result:

ok Correct Answer.
C1 = 6.
C2 = 6.