# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1253604 | hasan | 쌀 창고 (IOI11_ricehub) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int int_fast32_t
#define ll int_fast64_t
#define dll long double
#define spektar this_thread::sleep_for(chrono::milliseconds(1000))
bool s(ll mm,vector<ll> k,ll m){
if(mm>k.size()){
return false;
}
ll s1=0,s2=0;
for(int i=0; i<mm; i++){
if(i>=mm/2){
s2+=k[i];
}
else{
s1+=k[i];
}
}
if(s2-s1<=m){
return true;
}
for(int i=mm; i<k.size(); i++){
s1-=k[i-mm];
s2+=k[i];
s1+=k[i/2];
s2-=k[i/2];
if(s2-s1<=m){
return true;
}
}
return false;
}
void solve(){
ll n,c,m;
cin >> n >> c >> m;
vector<ll> k;
for(int i=0; i<n; i++){
ll a;
cin >> a;
k.push_back(a);
}
sort(k.begin(),k.end());
ll l=1,r=100000,best=1;
while(l<=r){
ll mm=(l+r)/2;
if(s(mm,k,m)){
best=mm;
l=mm+1;
}
else{
r=mm-1;
}
}
cout << best;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t=1;
//cin >> t;
while (t--){
solve();
}
}