Submission #981629

# Submission time Handle Problem Language Result Execution time Memory
981629 2024-05-13T11:51:33 Z OAleksa A Difficult(y) Choice (BOI21_books) C++14
10 / 100
1 ms 960 KB
#include <bits/stdc++.h>

#include "books.h"

using namespace std;
const int N = 1e5 + 69;
long long was[N], sum = 0;
//
// --- Sample implementation for the task books ---
//
// To compile this program with the sample grader, place:
//     books.h books_sample.cpp sample_grader.cpp
// in a single folder and run:
//     g++ books_sample.cpp sample_grader.cpp
// in this folder.
//

void solve(int n, int k, long long a, int s) {
	int l = 1, r = n, lst = -1;
	vector<int> ans;
	while (l <= r) {
		int mid = (l + r) / 2;
		long long b = 0;
		if (was[mid] > 0)
			b = was[mid];
		else
			b = skim(mid);
		was[mid] = b;
		if (b >= a) {
			lst = mid;
			r = mid - 1;
		}
		else
			l = mid + 1;
	}
	if (lst == -1) {
		for (int i = n, j = 0;j < k;j++, i--) {
			if (!was[i])
				was[i] = skim(i);
			sum += was[i];
		}
		if (sum < a)
			impossible();
		else if (sum >= a && sum <= 2 * a) {
			for (int i = n,j = 0;j < k;i--,j++)
				ans.push_back(i);
			answer(ans);
		}
		long long ss = 0;
		for (int i = 1;i <= k;i++) {
			if (!was[i])
				was[i] = skim(i);
			ss += was[i];
		}
		if (ss > 2 * a)
			impossible();
		else if (ss >= a && ss <= 2 * a) {
			for (int i = 1;i <= k;i++)
				ans.push_back(i);
			answer(ans);
		}
		int ptr = n, d = 0;
		while (d < k) {
			sum -= was[ptr];
			sum += was[n - ptr + 1];
			ptr--;
			d++;
			if (sum >= a && sum <= 2 * a)
				break;
		}
		for (int i = 1;i <= d;i++)
			ans.push_back(i);
		for (int i = n - k + 1;i <= ptr;i++)
			ans.push_back(i);
		assert(sum >= a && sum <= 2 * a);
		answer(ans);
	}
	else if (lst < k)
		impossible();
	n = lst;
	for (int i = n, j = 0;j < k;j++, i--) {
		if (!was[i])
			was[i] = skim(i);
		sum += was[i];
	}
	if (sum < a)
		impossible();
	else if (sum >= a && sum <= 2 * a) {
		for (int i = n,j = 0;j < k;i--,j++)
			ans.push_back(i);
		answer(ans);
	}
	long long ss = 0;
	for (int i = 1;i <= k;i++) {
		if (!was[i])
			was[i] = skim(i);
		ss += was[i];
	}
	if (ss > 2 * a)
		impossible();
	else if (ss >= a && ss <= 2 * a) {
		for (int i = 1;i <= k;i++)
			ans.push_back(i);
		answer(ans);
	}
	int ptr = n, d = 0;
	while (d < k) {
		sum -= was[ptr];
		sum += was[n - ptr + 1];
		ptr--;
		d++;
		if (sum >= a && sum <= 2 * a)
			break;
	}
	for (int i = 1;i <= d;i++)
		ans.push_back(i);
	for (int i = n - k + 1;i <= ptr;i++)
		ans.push_back(i);
	assert(sum >= a && sum <= 2 * a);
	answer(ans);
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Runtime error 1 ms 600 KB Execution killed with signal 6
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 1 ms 344 KB Output is correct
6 Runtime error 1 ms 600 KB Execution killed with signal 6
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 960 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1 ms 452 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 436 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 0 ms 448 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 960 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1 ms 452 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 436 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 0 ms 448 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 500 KB Output is correct
11 Correct 1 ms 448 KB Output is correct
12 Correct 1 ms 460 KB Output is correct
13 Correct 0 ms 424 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 0 ms 424 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 0 ms 444 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 0 ms 448 KB Output is correct
21 Correct 1 ms 600 KB Output is correct
22 Correct 0 ms 448 KB Output is correct
23 Runtime error 1 ms 460 KB Execution killed with signal 6
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 960 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1 ms 452 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 436 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 0 ms 448 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 500 KB Output is correct
11 Correct 1 ms 448 KB Output is correct
12 Correct 1 ms 460 KB Output is correct
13 Correct 0 ms 424 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 0 ms 424 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 0 ms 444 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 0 ms 448 KB Output is correct
21 Correct 1 ms 600 KB Output is correct
22 Correct 0 ms 448 KB Output is correct
23 Runtime error 1 ms 460 KB Execution killed with signal 6
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 960 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1 ms 452 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 436 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 0 ms 448 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 500 KB Output is correct
11 Correct 1 ms 448 KB Output is correct
12 Correct 1 ms 460 KB Output is correct
13 Correct 0 ms 424 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 0 ms 424 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 0 ms 444 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 0 ms 448 KB Output is correct
21 Correct 1 ms 600 KB Output is correct
22 Correct 0 ms 448 KB Output is correct
23 Runtime error 1 ms 460 KB Execution killed with signal 6
24 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 960 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 1 ms 452 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 436 KB Output is correct
7 Correct 1 ms 600 KB Output is correct
8 Correct 0 ms 448 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 500 KB Output is correct
11 Correct 1 ms 448 KB Output is correct
12 Correct 1 ms 460 KB Output is correct
13 Correct 0 ms 424 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 344 KB Output is correct
16 Correct 0 ms 424 KB Output is correct
17 Correct 1 ms 344 KB Output is correct
18 Correct 0 ms 444 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 0 ms 448 KB Output is correct
21 Correct 1 ms 600 KB Output is correct
22 Correct 0 ms 448 KB Output is correct
23 Runtime error 1 ms 460 KB Execution killed with signal 6
24 Halted 0 ms 0 KB -