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>
using namespace std;
typedef long long ll;
const string ny[2] = {"No", "Yes"};
#include"books.h"
void solve(int n, int k, long long A, int S) {
ll cad[n+4]={ };
ll v[k+2]={ },ac=0;
v[k+1]=n+1;
for(int i=1; i<=k; i++)
{
cad[i]=skim(i);
v[i]=i;
ac+=cad[i];
}
for(int i=k; i>0; i--)
{
if(ac>=A) break;
ll a=v[i]; ll b=v[i+1];
ac-=cad[v[i]];
while(abs(a-b)!=1)
{
ll m=(a+b)/2;
if(cad[m]==0) cad[m]=skim(m);
if(cad[m]+ac<=2*A)
a=m;
else b=m;
}
v[i]=b-1;
ac+=cad[v[i]];
//while(v[i]+1<v[i+1]&&ac<a&&ac-cad[v[i]]+cad[v[i]+1]<=2*a)
//{
// ac-=cad[v[i]];
// v[i]++;
// ac+=cad[v[i]];
//}
}
if(ac<A||ac>2*A)
{
impossible();
return;
}
vector<int> ans;
for(int i=1; i<=k; i++)
ans.push_back(v[i]);
answer(ans);
}
# | 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... |