2 条题解

  • 0
    @ 2026-5-11 12:42:13
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N=1e6+10;
    int a[N],m,n;
    bool check(int x){
    	int sum=0;
    	for(int i=1;i<=n;i++)sum+=max(0ll,a[i]-x);
    	return sum>=m;
    } 
    signed main(){
    	scanf("%lld%lld",&n,&m);
    	int mx=0;
    	for(int i=1;i<=n;i++)scanf("%lld",&a[i]),mx=max(mx,a[i]);
    	int l=1,r=mx;
    	while(l<r){
    		int mid=(l+r+1)/2;
    		if(check(mid))l=mid;
    		else r=mid-1;
    	}
    	printf("%lld\n",l);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 17:00:15
      #include <iostream>
      #include <cstring>
      #include <algorithm>
      using namespace std;
      typedef long long LL;
      int n,M,h[1000010];
      
      bool check(int x){
        LL s=0;
        for(int i=1;i<=n;i++)
          if(h[i]>x) s+=h[i]-x;
        return s>=M; //x小,s大
      }
      int find(){
        int l=0,r=1e9;
        while(l+1<r){
          int mid=l+r>>1;
          if(check(mid)) l=mid;
          else r=mid;
        }
        return l;
      }
      int main(){
        scanf("%d%d",&n,&M);
        for(int i=1;i<=n;i++)scanf("%d",&h[i]);
        printf("%d",find());
        return 0;
      }
      
      • 1

      信息

      ID
      2212
      时间
      1000ms
      内存
      128MiB
      难度
      6
      标签
      递交数
      92
      已通过
      26
      上传者