제출 #1224505

#제출 시각아이디문제언어결과실행 시간메모리
1224505lkaterisA Difficult(y) Choice (BOI21_books)C++20
5 / 100
62 ms616 KiB
#include <bits/stdc++.h>
#include "books.h"
using namespace std;

long long int B[100005];
const long long int INF = 1e17 + 1;


void solve(int N, int K, long long A, int S) {

    for(int i=1;i<=N;++i) {
        B[i] = skim(i);
    }

    for(int i=1;i<=N;++i) {
        for(int j=i+1;j<=N;++j) {
            long long int bi = B[i];
            long long int bj = B[j];
            if (i == 1) B[i] = -INF;
            else B[i] = B[i-1];
            if (j == N) B[j] = INF;
            else B[j] = B[j+1];

            long long int low = A-bi-bj;
            long long int high = 2*A - bi - bj;
            int l=1,r=N;
            while (l <= r) {
                int mid = (l+r)/2;
                if (low <= B[mid] and B[mid] <= high) {
                    if (mid == i) mid--;
                    if (mid == j) mid++;
                    vector<int> ans = {i,j,mid};
                    answer(ans);
                    break;
                }
                else if (B[mid] < low) {
                    l = mid+1;
                }
                else r = mid-1;
            }
            B[i] = bi;
            B[j] = bj;
        }
    }
    impossible();


    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...