제출 #939531

#제출 시각아이디문제언어결과실행 시간메모리
939531LucaIlieA Difficult(y) Choice (BOI21_books)C++17
10 / 100
1 ms700 KiB
#include <bits/stdc++.h>

#include "books.h"

using namespace std;

const int MAX_N = 1e5;
long long d[MAX_N + 1];

long long dif( int i ) {
    if ( d[i] == 0 )
        d[i] = skim( i );
    return d[i];
}

void solve( int n, int k, long long a, int q ) {
    /*int m = 0;
    while ( m + 1 <= n && dif( m + 1 ) < a )
        m++;



    if ( m != n ) {
        long long s = d[m + 1];
        vector<int> ans;
        ans.push_back( m + 1 );
        for ( int i = 1; i < k; i++ ) {
            s += d[i];
            ans.push_back( i );
        }
        if ( s <= 2 * a ) {
            answer( ans );
            return;
        }
    }

    if ( m == 0 ) {
        impossible();
        return;
    }*/

    int l = 0, r = n - k + 2;
    while ( r - l > 1 ) {
        int mid = (l + r) / 2;

        long long s = 0;
        vector<int> ans;
        for ( int i = mid; i < mid + k; i++ ) {
            s += dif( i );
            ans.push_back( i );
        }

        if ( s > 2 * a )
            r = mid;
        else
            l = mid;
    }
    if ( l == 0 )
        impossible();
    else {
        long long s = 0;
        vector<int> ans;
        for ( int i = l; i < l + k; i++ ) {
            s += dif( i );
            ans.push_back( i );
        }
        if ( s >= a )
            answer( ans );
        else
            impossible();
    }

    /*for ( int i = 1; i <= m - k + 1; i++ ) {
        long long s = 0;
        vector<int> ans;
        for ( int j = i; j < i + k; j++ ) {
            s += d[j];
            ans.push_back( j );
        }
        if ( a <= s && s <= 2 * a ) {
            answer( ans );
            return;
        }

        int l = i, r = m + 1;
        while ( r - l > 1 ) {

        }
    }*/
}
#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...