Submission #1000966

#TimeUsernameProblemLanguageResultExecution timeMemory
1000966MarwenElarbiA Difficult(y) Choice (BOI21_books)C++17
0 / 100
1 ms344 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define ll long long #define pb push_back #define ii pair<int,int> const int nax=2e5+5; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); long long skim(int); void answer(std::vector<int>); void impossible(); void solve(int N, int K, long long A, int S){ int cnt=40; ll sum=0; vector<int> tab; vector<ll> a; vector<pair<ll,int>> v; for (int i = 1; i <= K; ++i) { cnt--; tab.pb(i); a.pb(skim(i)); v.pb({a.back(),i}); sum+=a.back(); } int mn=a[0]; int l=K; int r=N+1; ll q; int mid; while(r-l>1){ cnt--; mid=(r+l)/2; q=skim(mid); if(q>=A-sum+mn) r=mid; else l=mid; } if(r==N+1||q>2*A-sum+a.back()){ for (int i = l; cnt-- && i > K && v.size() < 20; --i) { v.pb({skim(i),i}); } sort(v.begin(),v.end()); for (int i = 0; i < (1<<v.size()); ++i) { if(__builtin_popcount(i)!=K) continue; ll nab=0; for (int j = 0; j < v.size(); ++j) { if(i&(1<<j)) nab+=v[j].fi; } if(A<=nab&&nab<=2*A){ tab.clear(); for (int j = 0; j < v.size(); ++j) { if(i&(1<<j)) tab.pb(v[j].se); } sort(tab.begin(),tab.end()); answer(tab); return; } } impossible(); }else{ if(q>2*A-sum+mn){ tab.back()=mid; }else tab[0]=mid; sort(tab.begin(),tab.end()); answer(tab); return; } }

Compilation message (stderr)

books.cpp: In function 'void solve(int, int, long long int, int)':
books.cpp:53:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |             for (int j = 0; j < v.size(); ++j)
      |                             ~~^~~~~~~~~~
books.cpp:59:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |                 for (int j = 0; j < v.size(); ++j)
      |                                 ~~^~~~~~~~~~
#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...