Submission #529200

#TimeUsernameProblemLanguageResultExecution timeMemory
529200Cross_RatioA Difficult(y) Choice (BOI21_books)C++14
5 / 100
1 ms968 KiB
#include <bits/stdc++.h> //#include "books.h" using namespace std; typedef long long ll; ll D[100005]; ll skim(int); void answer(vector<int>); void impossible(); int cnt = 0; ll get(int m) { if(D[m]!=-1) return D[m]; assert(cnt<40); D[m] = skim(m+1); cnt++; return D[m]; } void solve(int N, int K, ll A, int S) { int i, j, a, b; for(i=0;i<N;i++) D[i] = -1; ll sum = 0; for(i=0;i<K-1;i++) sum += get(i); if(sum >= A) { impossible(); return; } int s = K-2, e = N-1; while(s+1<e) { int mid = (s + e + 1) >> 1; if(get(mid)>=A-sum) e = mid; else s = mid; } if(get(e)>=A-sum) { if(get(e)<=2*A-sum) { vector<int> ans; for(i=1;i<=K-1;i++) ans.push_back(i); ans.push_back(e+1); answer(ans); return; } N = e; } if(N < K) { impossible(); return; } for(i=0;i<=K;i++) { vector<int> ans; for(j=1;j<=i;j++) ans.push_back(j); for(j=N-K+1+i;j<=N;j++) ans.push_back(j); sort(ans.begin(),ans.end()); ans.erase(unique(ans.begin(),ans.end()),ans.end()); if(ans.size() != K) continue; ll sum = 0; for(int m=0;m<ans.size();m++) { sum += get(ans[m]-1); } if(sum >= A && sum <= 2*A) { answer(ans); return; } } impossible(); assert(0); return; }

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, ll, int)':
books.cpp:52:23: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   52 |         if(ans.size() != K) continue;
      |            ~~~~~~~~~~~^~~~
books.cpp:54:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |         for(int m=0;m<ans.size();m++) {
      |                     ~^~~~~~~~~~~
books.cpp:18:15: warning: unused variable 'a' [-Wunused-variable]
   18 |     int i, j, a, b;
      |               ^
books.cpp:18:18: warning: unused variable 'b' [-Wunused-variable]
   18 |     int i, j, a, b;
      |                  ^
#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...