# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
529196 | Cross_Ratio | A Difficult(y) Choice (BOI21_books) | C++14 | 3 ms | 1964 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
//#include "books.h"
using namespace std;
typedef long long ll;
ll D[100005];
ll skim(int);
void answer(vector<int>);
void impossible();
int cnt = 0;
ll get(int m) {
if(D[m]!=-1) return D[m];
assert(cnt<40);
D[m] = skim(m+1);
cnt++;
return D[m];
}
void solve(int N, int K, ll A, int S) {
int i, j, a, b;
for(i=0;i<N;i++) D[i] = -1;
ll sum = 0;
for(i=0;i<K-1;i++) sum += get(i);
if(sum >= A) {
impossible();
return;
}
int s = K-2, e = N-1;
while(s+1<e) {
int mid = (s + e + 1) >> 1;
if(get(mid)>=A-sum) e = mid;
else s = mid;
}
if(get(e)>=A-sum) {
if(get(e)<=2*A-sum) {
assert(0);
vector<int> ans;
for(i=1;i<=K-1;i++) ans.push_back(i);
ans.push_back(e+1);
answer(ans);
return;
}
N = e;
}
if(N < K) {
impossible();
return;
}
for(i=0;i<=K;i++) {
vector<int> ans;
for(j=1;j<=i;j++) ans.push_back(j);
for(j=N-K+1+i;j<=N;j++) ans.push_back(j);
sort(ans.begin(),ans.end());
ans.erase(unique(ans.begin(),ans.end()),ans.end());
if(ans.size() != K) continue;
ll sum = 0;
for(int m=0;m<ans.size();m++) {
sum += get(ans[m]-1);
}
if(sum >= A && sum <= 2*A) {
answer(ans);
return;
}
}
impossible();
return;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |