Submission #418379

#TimeUsernameProblemLanguageResultExecution timeMemory
418379johuthaA Difficult(y) Choice (BOI21_books)C++17
100 / 100
4 ms972 KiB
#include <vector> #include <iostream> #include <algorithm> #include "books.h" 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. // vector<long long> vals; long long skim2(int x) { while(x < 0 || x >= vals.size()){} if(vals[x] == 0) vals[x] = skim(x + 1); return vals[x]; } void solve(int N, int K, long long A, int S) { vals.assign(N, 0ll); vector<long long> lowest(K); long long losum = 0; for(int i = 0; i < K; i ++) { lowest[i] = skim2(i); losum += lowest[i]; } vector<int> 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(skim2(m) < A) lo = m; else hi = m; } if(hi < N && losum - lowest[K - 1] + skim2(hi) <= 2 * A) { ansvec[K - 1] = hi + 1; answer(ansvec); } hi --; if(hi < K) impossible(); int j = 0; while(losum < A && hi > j && j < K) { losum += skim2(hi) - lowest[j]; ansvec[j] = hi + 1; j ++; hi --; } if(losum < A) impossible(); else answer(ansvec); }

Compilation message (stderr)

books.cpp: In function 'long long int skim2(int)':
books.cpp:22:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     while(x < 0 || x >= vals.size()){}
      |                    ~~^~~~~~~~~~~~~~
#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...