Submission #942919

#TimeUsernameProblemLanguageResultExecution timeMemory
942919kokoxuyaA Difficult(y) Choice (BOI21_books)C++14
0 / 100
1 ms596 KiB
#include <bits/stdc++.h>
#include "books.h"
using namespace std;



bool checkers(int x, int K, vector<pair<int,int>> &ans, int currsum, int A) 
//return false if adding would make it too large
//return true if not and insert x into the vector
//ans : {index, value} pair
{
    int temp1 = skim(x);
    int cantake = (2 * A) - currsum;

    if ((currsum + (temp1 - ans[K].second)) > (2 * A))
    {
        return false;
    }
    else
    {
        int hi = K, lo = 1, mid;
        while (hi > lo)
        {
            mid = (hi + lo)/2;
            if (((temp1 - ans[mid].second) <= cantake)) //won't exceed : go lower
            {
                hi = mid;
            }
            else
            {
                lo = mid + 1;
            }
        }
        ans[lo] = {x,temp1};
    }
    return true;
}


void solve(int N, int K, long long A, int S) 
{
    int currsum = 0;
    vector<pair<int,int>>ans(K + 1);
    int temp1,temp2;
    for (int a = 1; a <= K; a++)
    {
        temp2 = skim(a);
        ans[a] = {a,temp2};
        currsum += temp2;
    }

    if (currsum > (2 * A))
    {
        impossible();
    }

    int hi = N,lo = K + 1,mid;
    vector<int>kokonut;

    while (hi > lo)
    {
        mid = (hi + lo)/2;
        if (checkers(mid, K, ans, currsum, A))
        {
            lo = mid;
        }
        else
        {
            hi = mid - 1;
        }
        if ((currsum >= A) && (currsum <= (2 * A)))
        {
            for (int a = 1; a <= K; a++)
            {
                kokonut.push_back(ans[a].first);
            }
            answer(kokonut);
        }
    }

    impossible();

}

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:44:9: warning: unused variable 'temp1' [-Wunused-variable]
   44 |     int temp1,temp2;
      |         ^~~~~
#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...