Submission #846891

#TimeUsernameProblemLanguageResultExecution timeMemory
846891MinaRagy06A Difficult(y) Choice (BOI21_books)C++17
10 / 100
5 ms2756 KiB
#include <bits/stdc++.h>
#ifdef MINA
    #include "grader.cpp"
#else
    #ifdef DEBUG
        #include "grader2.cpp"
    #endif
#endif
#include "books.h"
#define ll long long
using namespace std;

ll b[100'005];
ll ask(int i) {
    if (~b[i]) return b[i];
    return b[i] = skim(i + 1);
}
void solve(int n, int k, ll a, int Q) {
    memset(b, -1, sizeof b);
    if (ask(0) > 2 * a) {
        impossible();
    }
    vector<int> rem;
    for (int i = 0; i < n; i++) {
        rem.push_back(i);
    }
    ll s = 0;
    vector<int> ans;
    while (k--) {
        int l = 0, r = rem.size() - 1;
        while (l <= r) {
            int md = (l + r) >> 1;
            if (a - s <= ask(rem[md]) * (k + 1)) {
                r = md - 1;
            } else {
                l = md + 1;
            }
        }
        int i = l;
        if (i == rem.size()) i--;
        if (b[rem[i]] > 2 * a - s) {
            if (i == 0) {
                impossible();
            }
            i--;
        }
        s += ask(rem[i]);
        ans.push_back(rem[i] + 1);
        vector<int> New;
        for (auto j : rem) {
            if (j == ans.back() - 1) {
                continue;
            }
            New.push_back(j);
        }
        rem = New;
    }
    if (!(a <= s && s <= 2 * a)) {
        impossible();
    }
    answer(ans);
}

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:40:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |         if (i == rem.size()) i--;
      |             ~~^~~~~~~~~~~~~
#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...