QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#719126#2511. Pyramidyuto1115#AC ✓22ms1668kbC++20673b2024-11-06 22:37:252024-11-06 22:37:26

Judging History

This is the latest submission verdict.

  • [2024-11-06 22:37:26]
  • Judged
  • Verdict: AC
  • Time: 22ms
  • Memory: 1668kb
  • [2024-11-06 22:37:25]
  • Submitted

answer

#include <cstdio>

const int N = 10005;
int t, n, a[N], k;

int main() {
	scanf("%d", &t);
	while (t--) {
		scanf("%d%d", &n, &k);
		a[0] = k - 1;
		int start = 0, end = 1, len = 0, ans = 0;
		for (int i = 1; i < n; ++i) {
			if (a[ans] & 1) ans += 1;
			if (i) {
				for (int j = end; j > start; --j) {
					a[j] += a[j - 1] >> 1;
					a[j - 1] -= a[j - 1] >> 1;
				}
				while (a[start] == 1) ++start;
				while (a[end]) ++end;
			}
			/*
			for (int i = 0; i < end; ++i) printf("%d ", a[i]);
			printf("\n");
			printf("# %d %d\n", i, ans);
			printf("\n");
			printf("\n");
			*/
		}
		printf("%d\n", ans);
		for (int i = 0; i <= n + 1; ++i) a[i] = 0;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 1540kb

input:

2
5 1
5 2

output:

0
1

result:

ok 2 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 1536kb

input:

3
5 3
5 4
5 5

output:

2
3
2

result:

ok 3 lines

Test #3:

score: 0
Accepted
time: 22ms
memory: 1668kb

input:

20
10000 100000000
9999 98987654
1234 5678
5000 20091234
1 100
1 101
7777 77777777
5890 98767897
106 67898765
2 4
9999 98987655
9999 98987656
9999 98987657
9999 98987658
9999 98987659
9999 98987660
9999 98987661
9999 98987662
9999 98987663
9999 98987664

output:

4931
5021
614
2506
0
0
3971
2907
50
1
4968
5044
5049
5002
4998
4984
5055
5045
4991
5037

result:

ok 20 lines