Submission #418506

#TimeUsernameProblemLanguageResultExecution timeMemory
418506AdOjis485A Difficult(y) Choice (BOI21_books)C++14
100 / 100
5 ms1012 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. // #define int long long 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(signed N, signed K, long long A, signed S) { vals.assign(N, 0ll); vector<int> lowest(K); long long losum = 0; for(int i = 0; i < K; i ++) { lowest[i] = skim2(i); 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(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 = K - 1; while(losum < A && j >= 0) { losum += skim2(hi) - lowest[j]; ansvec[j] = hi + 1; j --; hi --; } if(losum < A) impossible(); else { while(losum > 2 * A) {} answer(ansvec); } }

Compilation message (stderr)

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