Submission #933454

#TimeUsernameProblemLanguageResultExecution timeMemory
933454AtabayRajabliA Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms1112 KiB
#include <bits/stdc++.h>
#include "books.h"

using namespace std;

const int sz = 1e5 + 5;
long long q[sz];

long long get(long long x)
{
    if(q[x])return q[x];
    return q[x] = skim(x);
}

void solve(int n, int k, long long a, int s)
{
    int l = 1, r = n, ind = n + 1;
    while(l <= r)
    {
        int m = (l + r) >> 1;
        if(get(m) >= a)r = m - 1, ind = m;
        else l = m + 1;
    }

    vector<int> v;
    long long sum = 0;
    for(int i = 1; i <= k; i++)
    {
        v.push_back(i);
        sum += get(i);
    }
    if(sum > 2 * a)impossible();

    for(int i = max(k + 1, ind - k + 1); i <= ind; i++)
    {
        v.push_back(i);
    }
    
    l = 0, r = k;
    for(int i = 0; r < v.size(); i++)
    {
        if(a <= sum && sum <= a * 2)break;
        sum -= get(v[l]), l++;
        sum += get(v[r]), r++;
    }
    if(a <= sum && sum <= a * 2)
    {
        vector<int> ans;
        while(l < r)ans.push_back(v[l++]);
        answer(ans);
    }
    else impossible();
}   

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:40:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for(int i = 0; r < v.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...