Submission #1301377

#TimeUsernameProblemLanguageResultExecution timeMemory
1301377efegA Difficult(y) Choice (BOI21_books)C++20
0 / 100
4 ms1200 KiB
#include <bits/stdc++.h>
#include "books.h"
using namespace std;


using i64 = long long; 

template<typename T>
using vec = vector<T>;

void solve(int N, int K, long long A, int S) {
    vec<i64> x(N+1,0); 
    vec<int> ans(K,0); 
    i64 currSum = 0; 
    for (int i = 1; i <= N; i++) x[i] = skim(i); 
    
    for (int i = 0; i < K; i++){
        ans[i] = i+1; 
        currSum += x[i+1]; 
    } 
    if (currSum >= A && currSum <= 2 * A) answer(ans); 
    
    while (currSum < A){
        i64 mn = 1e18; int mnidx = -1; 
        for (int i = 0; i < K; i++){
            int idx = ans[i]; 

            if (i == K-1 || (idx + 1 != ans[i+1])){
                if (idx < N){
                    if (x[idx+1] - x[idx] < mn){
                        mn = x[idx+1] - x[idx]; 
                        mnidx = i; 
                    }
                }
            }
        }

        if (mnidx == -1) break; 

        currSum -= x[ans[mnidx]]; 
        ans[mnidx] = ans[mnidx] + 1; 
        currSum += x[ans[mnidx]];

        if (currSum >= A && currSum <= 2 * A){answer(ans);}
    }

    impossible(); 
}
#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...