Submission #751383

#TimeUsernameProblemLanguageResultExecution timeMemory
751383vjudge1A Difficult(y) Choice (BOI21_books)C++17
20 / 100
249 ms976 KiB
#include <bits/stdc++.h>
#include "books.h"
using namespace std;
#define int long long
#define pb push_back

int n, k, a, s;
vector<int> v;

void ans_start(int idx) {
    vector<signed> ans;
    for(int i = idx; i < idx + k; i++) {
        ans.pb(i);
    }
    answer(ans);
}

void solve(signed N, signed K, int A, signed S) {
    n = N, k = K, a = A, s = S;
    v.assign(1 + n, -1);
    if(n <= s) {
        for(int i = 1; i <= n; i++) {
            v[i] = skim(i);
        }
        /*for(int i = 1; i <= n; i++) {
            if(v[i] > a) {
                n = i;
                v.resize(n);
                break;
            }
        }
        if(n < k) {
            impossible();
        }*/
        int sum = 0;
        for(int i = 1; i <= k; i++) {
            sum += v[i];
        }
        if(sum > 2 * a) {
            impossible();
        }
        if(sum >= a) {
            ans_start(1);
        }
        for(int j = 2; j + k - 1 <= n; j++) {
            sum -= v[j - 1];
            sum += v[j + k - 1];
            if(sum >= a && sum <= 2 * a) {
                ans_start(j);
            }
        }
        sum = 0;
        for(int i = 1; i <= k - 1; i++) {
            sum += v[i];
        }
        int spec = -1;
        for(int i = k; i <= n; i++) {
            if(v[i] >= a) {
                sum += v[i];
                spec = i;
                break;
            }
        }
        if(spec != -1) {
            if(sum >= a && sum <= 2 * a) {
                vector<signed> ans;
                for(int i = 1; i <= k - 1; i++) {
                    ans.pb(i);
                }
                ans.pb(spec);
                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...