Submission #418297

#TimeUsernameProblemLanguageResultExecution timeMemory
418297johuthaA Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms200 KiB
#include <vector>
#include <iostream>
#include <algorithm>
 
#include "books.h"
 
using namespace std;
//
// --- Sample implementation for the task books ---
//
// To compile this program with the sample grader, place:
//     books.h books_sample.cpp sample_grader.cpp
// in a single folder and run:
//     g++ books_sample.cpp sample_grader.cpp
// in this folder.
//
 
void solve(int N, int K, long long A, int S) {
    
    vector<int> lowest(K);
    int losum = 0;    
    for(int i = 0; i < K; i ++)
    {
        lowest[i] = skim(i + 1);
        losum += lowest[i];
    }
 
    int lo = 0, hi = N - 1;
    while(lo + 1 < hi)
    {
        int m = (lo + hi) / 2;
        if(skim(m) < A) lo = m;
        else hi = m;
    }
    hi = max(hi, K - 1);
 
    vector<int> highest(K);
    int hisum = 0;
    for(int i = 0; i < K; i ++)
    {
        highest[i] = skim(hi - K + i + 2);
        hisum += highest[i];
    }
 
    if(hisum < A || losum > 2 * A) impossible();
    int cut = -1;
    while (losum < A)
    {
        cut ++;
        losum += highest[cut] - lowest[cut];
    }
    vector<int> ansvec(K);
    for(int i = 0; i < K; i ++)
    {
        if(i <= cut) ansvec[i] = hi - K + 2 + i;
        else ansvec[i] = i;
    } 
    for (auto &i : ansvec) i++;
 
    answer(ansvec);
 
}
#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...