이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "books.h"
#define mid ((l+r)>>1)
using namespace std ;
const long long N = 1e5+5 ;
long long a[N] ;
void solve(int n, int k, long long A, int s) {
long long sum = 0 ;
vector <int> v ;
for ( long long i = 1 ; i <= k ; i++ ) {
a[i] = skim(i) ;
sum += a[i] ;
v.push_back(i) ;
}
if ( sum > 2ll * A ) {
impossible () ;
}
long long id = k , xx = n+1 ;
while ( sum < A && id > 0 ) {
long long l = id , r = xx ;
if ( !a[r-1] ) {
a[r-1] = skim(r-1) ;
}
if ( sum + a[r-1] - a[l] <= 2ll * A ) {
l = r-1 ;
}
while ( r - l > 1 ) {
if ( !a[mid] ) {
a[mid] = skim(mid) ;
}
if ( sum + a[mid] - a[id] <= 2ll * A ) {
l = mid ;
}
else {
r = mid ;
}
}
sum -= a[id] ;
sum += a[l] ;
v[id-1] = l ;
xx = l ;
id-- ;
}
if ( sum < A ) {
impossible () ;
}
answer(v) ;
}
# | 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... |