Submission #856842

#TimeUsernameProblemLanguageResultExecution timeMemory
856842efedmrlrA Difficult(y) Choice (BOI21_books)C++17
0 / 100
2 ms2012 KiB
#include <bits/stdc++.h> #include "books.h" #define lli __uint128_t #define MP make_pair #define pb push_back 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<lli> dt; lli skimmer(int x) { if(dt[x] != -1) { return dt[x]; } return dt[x] = skim(x); } void solve(int N, int K, long long A, int S) { dt.assign(N+1, -1); vector<int> res; lli sum = 0; for(int i = 1; i<=K; i++) { sum += skimmer(i); } if(sum > 2*A) impossible(); lli val = A; int l = K, r = N; while(l<r) { int tm = (l + r) / 2; if(val <= skimmer(tm)) { r = tm; } else { l = tm + 1; } } if(val <= skimmer(l)) { if(sum + skimmer(l) <= 2*A) { res.clear(); for(int i = 1; i<=K-1; i++) res.pb(i); res.pb(l); answer(res); } } else { l++; } N = l - 1; cout<<"newN: "<<N<<"\n"; sum = 0; res.clear(); for(int i = 1; i<=K; i++) { sum += skimmer(i); res.pb(i); } if(sum >= A) { answer(res); } res.clear(); for(int i = K; i>=1; i--) { sum -= skimmer(i); sum += skimmer(N); res.pb(N); N--; if(sum >= A) { for(int j = 1; j<i; j++) { res.pb(j); } answer(res); } } impossible(); }

Compilation message (stderr)

books.cpp: In function '__int128 unsigned skimmer(int)':
books.cpp:19:14: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<__int128 unsigned>, __int128 unsigned>::value_type' {aka '__int128 unsigned'} and 'int' [-Wsign-compare]
   19 |     if(dt[x] != -1) {
books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:32:12: warning: comparison of integer expressions of different signedness: '__int128 unsigned' and 'long long int' [-Wsign-compare]
   32 |     if(sum > 2*A) impossible();
      |        ~~~~^~~~~
books.cpp:45:29: warning: comparison of integer expressions of different signedness: '__int128 unsigned' and 'long long int' [-Wsign-compare]
   45 |         if(sum + skimmer(l) <= 2*A) {
      |            ~~~~~~~~~~~~~~~~~^~~~~~
books.cpp:64:12: warning: comparison of integer expressions of different signedness: '__int128 unsigned' and 'long long int' [-Wsign-compare]
   64 |     if(sum >= A) {
      |        ~~~~^~~~
books.cpp:75:16: warning: comparison of integer expressions of different signedness: '__int128 unsigned' and 'long long int' [-Wsign-compare]
   75 |         if(sum >= A) {
      |            ~~~~^~~~
#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...