Submission #418359

#TimeUsernameProblemLanguageResultExecution timeMemory
418359johuthaA Difficult(y) Choice (BOI21_books)C++17
100 / 100
2 ms304 KiB
#include <vector> #include <iostream> #include <algorithm> #include "books.h" #define int long long using namespace std; // // --- Sample implementation for the task books --- // // To compile this program with the sample grader, place: // books.h books_sample.cpp sample_grader.cpp // in a single folder and run: // g++ books_sample.cpp sample_grader.cpp // in this folder. // void solve(signed N, signed K, int A, signed S) { vector<int> lowest(K); int losum = 0; for(int i = 0; i < K; i ++) { lowest[i] = skim(i + 1); losum += lowest[i]; } vector<signed> ansvec(K); for(int i = 0; i < K; i ++) ansvec[i] = i + 1; if(losum > 2 * A) impossible(); else if(losum >= A) answer(ansvec); int lo = 0, hi = N; while(lo + 1 < hi) { int m = (lo + hi) / 2; if(skim(m + 1) < A) lo = m; else hi = m; } if(hi < N && losum - lowest[K - 1] + skim(hi + 1) <= 2 * A) { ansvec[K - 1] = hi + 1; answer(ansvec); return; } hi --; if(hi < K) impossible(); int j = 0; while(losum < A && hi > j && j < K) { losum += skim(hi + 1) - lowest[j]; ansvec[j] = hi + 1; j ++; hi --; } if(losum < A) impossible(); else answer(ansvec); }
#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...