Thứ Hai, 18 tháng 4, 2022

CANDY1051 C++


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

#define ll long long

long long n, m, k = 0;
long long a[100005];

void nhap(){
    cin >> n >> m;
    for ( int i = 1; i <= n; i++ ){
        scanf("%d", &a[i]);
    }
}

bool check(long long mid){
    long long res = 0;
    for ( int i = 1; i <= n; i++ ){
        if ( a[i] < mid ) res += (mid-a[i]);
    }
    if(res<=m) return true;
    return false;
}

ll binarySearch(ll l,ll r){
    long long i = 0, j = 2*1e12;
    long long mid,k;
    while (l<=r){
        mid = (l+r)/2;
        if (check(mid)==true){
            k = mid;
            l = mid+1;
        } else r = mid-1;
    }
    return k;
}

void xuly(){
    k=binarySearch(0,1e12*2);
   // cout<<k;
    for ( int i = 1; i <= n; i++ ){
        if (a[i]<k){
            m=m-(k-a[i]);
            a[i] = k;
        }
    }
    //for(int i=1;i<=n;i++) cout<<a[i]<<" ";
  //  cout<<endl;

        for ( int i = 1; i <= n; i++ ){
            if ( a[i]==k&&m>0){
                    cout << (k  +1) << " ";
                    m --;
            } else cout << a[i] << " ";

    }
}

int main(){
    freopen("CANDY1051.INP", "r", stdin);
    freopen("CANDY1051.OUT", "w", stdout);
    nhap();
    xuly();
}

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.