Submission #1368627

#TimeUsernameProblemLanguageResultExecution timeMemory
1368627lizi14A Difficult(y) Choice (BOI21_books)C++20
5 / 100
1 ms1188 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#include"books.h"
#define pb push_back
void solve(int N, int K, long long A, int S){
    long long fi=skim(1);
    long long bol=skim(N);
    if(fi>2*A){
        impossible();
        return;
    }
    long long l=1,r=N;
    long long ans=-1;
    long long gvanca[N+1];
    ll x[N+1];
    fill(x,x+N+1,0);
    x[1]=fi;
    x[N]=bol;
    while(l<=r){
        long long m=(l+r)/2;
        long long bati;
        if(x[m]==0){
            bati=skim(m);
            x[m]=bati;
        }
        else bati=x[m];
        if(bati>=A){
            ans=m;
            r=m-1;
        }
        else{
            l=m+1;
        }
    }
    ll sum=0;
    for(int i=1; i<=K; i++){
        if(x[i]==0){
            int a=skim(i);
            x[i]=a;
        }
        sum+=x[i];
    }
    if(sum>2*A){
        impossible();
        return;
    }
    if(sum>=A && sum<=2*A){
        vector<int>bati;
        for(int i=1; i<=K; i++){
            bati.pb(i);
        }
        answer(bati);
        return;
    }
    ll sss=sum-x[K];
    int liam_with_blond_hair_was_better=0;
    if(ans!=-1){
        liam_with_blond_hair_was_better=ans;
        sss+=x[ans];
        vector<int>as;
        if(sss>=A && sss<=2*A){
    		for(int i=1; i<=K-1; i++){
    			as.push_back(i);
			}
			as.push_back(ans);
			answer(as);
			return;
		}
		
    }
    else{
        liam_with_blond_hair_was_better=N+1;
    }
    int rn=liam_with_blond_hair_was_better-1;
    vector<int>liam;
    for(int i=1; i<=K; i++){
        liam.pb(i);
    }

    for(int i=0; i<K; i++){
        int to_remove=K-i;
        int to_add=rn-i;
        if(to_add<=K)break;
        sum-=x[to_remove];
        if(x[to_add]==0){
            x[to_add]=skim(to_add);
        }
        sum+=x[to_add];
        liam[to_remove-1]=to_add;
        if(sum>=A && sum<=2*A) {
            answer(liam);
            return;
        }
    }
    impossible();
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...