binary search flows greedy sortings *1300

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;

#define ll  long long int
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl

bool check(vector<ll>&v,ll mid,ll sum)
{
    vector<ll>temp(mid);
    for(ll i=0;i<mid;i++)
    {
        temp[i]=v[i];
    }
    bool val=true;
    sort(temp.begin(),temp.end(),greater<ll>());
    ll j=0;
    for(ll i=0;i<(mid/2);i++)
    {
        ll maxi=max(temp[j],temp[j+1]);
        sum-=maxi;
        if(sum<0)
        {
          val=false;
          break;
        }
        j+=2;
    }
    if(mid%2==1&&val==true){
        sum-=temp[mid-1];
        if(sum<0){
            val=false;
        }
    }

    if(val==true) return true;
    else return false;
}

void solve()
{
   ll n;cin>>n;
   ll h;cin>>h;
   vector<ll>a(n);
   for(ll i=0;i<n;i++)cin>>a[i];
   ll low=1;ll high=n;
   ll ans=1;
   while(low<=high)
   {
      ll mid=(low+high)/2;

      if(check(a,mid,h)==true)
      {
        ans=mid;
        low=mid+1;
      }
      else
      {
        high=mid-1;
      }
   }
   cout<<ans<<endl;

  
   
}
     

   
   
    



int main() {
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
     // precompute();

    IOS;
    ll T;
    T=1;
    // cin >> T;
    while(T--){
    solve();
    }

    return 0;
}


Comments

Submit
0 Comments
More Questions

415. Add Strings
22. Generate Parentheses
13. Roman to Integer
2. Add Two Numbers
515. Find Largest Value in Each Tree Row
345. Reverse Vowels of a String
628. Maximum Product of Three Numbers
1526A - Mean Inequality
1526B - I Hate 1111
1881. Maximum Value after Insertion
237. Delete Node in a Linked List
27. Remove Element
39. Combination Sum
378. Kth Smallest Element in a Sorted Matrix
162. Find Peak Element
1529A - Eshag Loves Big Arrays
19. Remove Nth Node From End of List
925. Long Pressed Name
1051. Height Checker
695. Max Area of Island
402. Remove K Digits
97. Interleaving String
543. Diameter of Binary Tree
124. Binary Tree Maximum Path Sum
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
501A - Contest
160A- Twins
752. Open the Lock
1535A - Fair Playoff
1538F - Interesting Function