Submission #403387

# Submission time Handle Problem Language Result Execution time Memory
403387 2021-05-13T06:30:45 Z Nordway A Difficult(y) Choice (BOI21_books) C++17
0 / 100
1 ms 448 KB
#include <bits/stdc++.h>
#include <books.h>

#define sz(v) (int)v.size()
#define pb push_back

using namespace std;


typedef long long ll;

const int N = 1e5 + 1;

bool asked[N];

ll x[N];

ll ask (int i) {
	if (!i) return 0ll;
	if (asked[i]) return x[i];
	asked[i] = true;
	x[i] = skim(i);
	return x[i];
}

void solve(int n,int k,ll A,int s){
	for (int i = 1; i <= n; i++) {
		asked[i] = false;
	}
	// 1...k (<=10)
	ll sum = 0;
	vector <int> ans;
	for (int i = 1; i <= k; i++) {
		sum += ask(i);
		ans.pb(i);
		if (sum > A + A) impossible();
	}
	if (sum >= A) answer(ans);

	// x[R] > A (~16-17)
	int l = k + 1, r = n, R = 0;
	while (l <= r) {
		int mid = (l + r) / 2;
		if(ask(mid) <= A) l = mid + 1;
		else R = mid, r = mid - 1;
	}

	// 1...k-1 + R (0)
	if (sum - ask(k) + ask(R) >= A && sum - ask(k) + ask(R) <= A + A) {
		ans.pop_back();
		ans.pb(R);
		answer(ans);
	}
	
	// R...R-k+1 (<=10)
	
	if (!R) R = n;
	else R--;
	int j = max(R - k + 1, k + 1);
	for (int i = 1; i <= k; i++) {
		if (j > R) break;
		sum -= ask(i);
		sum += ask(j);
		ans[i - 1] = j;
		if (sum >= A && sum <= A + A) answer(ans);
	}

	impossible();
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 1 ms 200 KB Output is correct
3 Incorrect 1 ms 200 KB Incorrect
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 1 ms 200 KB Output is correct
3 Incorrect 1 ms 200 KB Incorrect
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 380 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 448 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 328 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Incorrect 1 ms 328 KB Incorrect
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 380 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 448 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 328 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Incorrect 1 ms 328 KB Incorrect
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 380 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 448 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 328 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Incorrect 1 ms 328 KB Incorrect
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 380 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 448 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 328 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Incorrect 1 ms 328 KB Incorrect
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 380 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 448 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 328 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Incorrect 1 ms 328 KB Incorrect
9 Halted 0 ms 0 KB -