제출 #1365587

#제출 시각아이디문제언어결과실행 시간메모리
1365587SofiatpcA Difficult(y) Choice (BOI21_books)C++20
45 / 100
0 ms420 KiB
#include <bits/stdc++.h>

#include "books.h"

using namespace std;

typedef long long ll;
const int MAXN = 1e5+5;
ll val[MAXN];

void solve(int n, int k, ll a, int s) {
    ll mn = 0;
    for(int i = 1; i <= k; i++){
        val[i] = skim(i);
        mn += val[i];
    }

    if(mn > 2*a){ impossible(); return; }

    int cur = k, lst = n;
    while(cur > 0 && mn < a){
        val[lst] = skim(lst);
        mn += val[lst]-val[cur];
        cur--; lst--;
    }

    if(mn < a){ impossible(); return; }

    if(lst == n)mn -= val[cur];
    else {mn -= val[lst+1]; cur++; lst++;}

    int l = cur, r = lst;
    while(l != r){
        int mid = (l+r)/2;
        val[mid] = skim(mid);
        if(mn+val[mid] >= a)r = mid;
        else l = mid+1;
    }

    if(mn+val[l] > 2*a){ impossible(); return; }

    vector<int> ans;
    for(int i = 1; i < cur; i++)ans.push_back(i);
    ans.push_back(l);
    for(int i = lst+1; i <= n; i++)ans.push_back(i);

    answer(ans);

}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…