제출 #729154

#제출 시각아이디문제언어결과실행 시간메모리
729154Jean7A Difficult(y) Choice (BOI21_books)C++14
0 / 100
3 ms208 KiB
#include <bits/stdc++.h>
#include "books.h"
#define mid ((l+r)>>1)

using namespace std ;

const int N = 1e5+5 ;

int a[N] ;

void solve(int n, int k, long long A, int s) {
    int sum = 0 ;
    vector <int> v ;
    for ( int i = 1 ; i <= k ; i++ ) {
        a[i] = skim(i) ;
        sum += a[i] ;
        v.push_back(i) ;
    }
    if ( sum > 2 * A ) {
        impossible () ;
    }
    int id = k , xx = n+1 ;
    while ( sum < A && id > 0 ) {
        int l = id , r = xx ;
        while ( l < r ) {
            if ( !a[l] ) {
                a[l] = skim(l) ;
            }
            if ( sum + a[l] - a[id] >= A ) {
                break ;
            }
            l++ ;
        }
//        while ( r - l > 1 ) {
//            if ( !a[mid] ) {
//                a[mid] = skim(mid) ;
//            }
//            if ( sum + a[mid] - a[id] <= 2 * 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...