제출 #1224426

#제출 시각아이디문제언어결과실행 시간메모리
1224426SpyrosAlivA Difficult(y) Choice (BOI21_books)C++20
20 / 100
60 ms1196 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int n, k, s;
ll a;

void solve(int N, int K, ll A, int S) {
    n = N;
    k = K;
    a = A;
    s = S;
    vector<ll> arr(n+1);
    for (int i = 1; i <= n; i++) {
        arr[i] = skim(i);
    }
    ll currS = 0;
    vector<int> index(k+2);
    for (int i = 1; i <= k; i++) {
        currS += arr[i];
        index[i] = i;
    }
    index[k+1] = n+1;
    for (int curr = k; curr >= 1; curr--) {
        if (currS >= a && currS <= 2*a) break;
        int allow = index[curr+1] - 1;
        if (allow == curr) continue;
        currS -= arr[curr];
        for (int j = curr+1; j <= allow; j++) {
            currS += arr[j];
            index[curr] = j;
            if (currS >= a && currS <= 2*a) {
                vector<int> fin;
                for (int i = 1; i <= k; i++) {
                    fin.push_back(index[i]);
                }
                answer(fin);
                return;
            }
            else if (currS < a) {
                if (j == allow) break;
                currS -= arr[j];
                continue;
            }
            else if (currS > 2*a) {
                currS -= arr[j];
                index[curr] = j-1;
                currS += arr[j-1];
                break;
            }
        }
    }
    if (currS > 2 * a || currS < a) {
        impossible();
        return;
    }
    else {
        vector<int> fin;
        for (int i = 1; i <= k; i++) {
            fin.push_back(index[i]);
        }
        answer(fin);
        return;
    }
}
#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...