11 条题解

  • 0
    @ 2026-3-26 20:41:12
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a[1000005],maxx=-1;
    bool check(int x)
    {
        int sum=0;
        for(int i=1;i<=n;i++)
            a[i]>x?sum+=a[i]-x:sum+=0;
        return (sum>=m?1:0);
    }
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            maxx=max(a[i],maxx);
        }
        int l=0,r=maxx,ans,mid;
        while(l<=r)
        {
            mid=l+r>>1;
            check(mid)?ans=mid,l=mid+1:r=mid-1;
        }
        printf("%d",ans);
    }
    
    • 0
      @ 2025-9-21 11:46:21
      #include<bits/stdc++.h>
      using namespace std;
      int n,m,maxx=-1;
      int a[10000005];
      int check(int x){
      	int sum=0;
      	for(int i=1; i<=n; i++){
      		if(x<a[i]) sum+=a[i]-x;
      	}
      	return sum>=m; 
      }
      
      int main(){
      	cin >> n >> m;
      	for(int i=1; i<=n; i++){
      		cin >> a[i];
      		maxx=max(a[i],maxx);	
      	}
      	int l=0,r=maxx,mid;
      	while (l<r){
      		mid=(l+r+1)/2;
      		if(check(mid)){
      			l=mid;
      		}
      		else r=mid-1;
      	}
      	cout << r;
      	return 0;
      }
      
      
      • 0
        @ 2025-8-6 22:00:38
        #include<bits/stdc++.h>
        using namespace std;
        int n,m,maxx=-1;
        int a[10000005];
        int check(int x){
        	int sum=0;
        	for(int i=1; i<=n; i++){
        		if(x<a[i]) sum+=a[i]-x;
        	}
        	return sum>=m; 
        }
        
        int main(){
        	cin >> n >> m;
        	for(int i=1; i<=n; i++){
        		cin >> a[i];
        		maxx=max(a[i],maxx);	
        	}
        	int l=0,r=maxx,mid;
        	while (l<r){
        		mid=(l+r+1)/2;
        		if(check(mid)){
        			l=mid;
        		}
        		else r=mid-1;
        	}
        	cout << r;
        	return 0;
        }
        
        • 0
          @ 2025-5-6 22:07:22
          #include<algorithm>
          using namespace std;
          int n,m,a[10000];
          /*
          贪心,二分答案
          第一步,找到要枚举的东西
          第二步,找到要比较的东西m木材
          找>=m的第一个值
          高度找的是<=目标值的最后一个
          */
          bool f(int h)
          {
          	int sum = 0;
          	for(int i = 1;i <= n;i++)
          		if(a[i] > h)
          			sum += (a[i]-h);
          	return sum >= m;
          }
          int main()
          {
          	cin >> n >> m;
          	for(int i = 1;i <= n;i++) cin >> a[i];
          	int l = 0,r = 1000000000;
          	while(l < r)
          	{
          		int mid = (l + r + 1) >> 1;
          		if(f(mid)) l = mid;
          		else r = mid - 1;
          	}
          	cout << l;
          	return 0;
          }````
          • -1
            @ 2023-5-2 18:18:43
            #include<iostream>
            #include<algorithm>
            using namespace std;
            int n,m,a[1000005];
            bool check(int h)
            {
            	int sum = 0;
            	for(int i = 1;i <= n;i++)
            		if(a[i] > h)
            			sum += (a[i]-h);
            	return sum >= m;
            }
            int main()
            {
            	cin >> n >> m;
            	for(int i = 1;i <= n;i++) cin >> a[i];
            	int l = 0,r = 1000000000;
            	while(l < r)
            	{
            		int mid = (l + r + 1) >> 1;
            		if(check(mid)) l = mid;
            		else r = mid - 1;
            	}
            	cout << l;
            	return 0;
            }
            
            
            • -2
              @ 2023-5-1 11:46:05
              #include<algorithm>
              using namespace std;
              int a[1000005],n,m;  
              bool check(int h){
              	int sum=0;
              	for (int i=1; i<=n; i++){
              		if (a[i]>h){
              			sum += (a[i]-h);
              		}
              	
              	}
              	return sum>=m;
              }                                                
              int main(){
              	cin >>n >> m;
              	for (int i=1; i<=n; i++){
              		cin >> a[i];
              	}
              	int l=0,r=1000000000;
              	while(l<r){
              		int mid=(l+r+1)>>1;
              		if (check(mid)) {
              			l=mid;
              		}
              		else {
              			r=mid-1;
              		}
              	}
              	cout << l;
              	return 0;
              }
              
              
              • -3
                @ 2024-11-3 15:43:54

                #include #include using namespace std; long long a[1000005]; long long n,m,ans; bool check(int x) { int sum = 0; for(int i = 1;i <= n;i++) { if(a[i] > x) sum += a[i] - x; } return sum >= m; } int main() { cin >> n >> m; for(int i = 1;i <= n;i++) { cin >> a[i]; } sort(a + 1,a + n + 1); long long l = 0,r = a[n]; while(l <= r) { int mid = (l + r) / 2; if(check(mid)) { ans = mid; l = mid + 1; } else r = mid - 1; } cout << ans << endl; return 0; }

                • -3
                  @ 2023-4-23 13:47:53
                  #include <bits/stdc++.h>
                  
                  using namespace std;
                  typedef long long ll;
                  const int N = 1000010;
                  ll a[N];
                  ll n, m;
                  
                  ll check(ll x) {
                  	ll sum = 0;
                  	for (int i = 0; i < n; i++) {
                  		if (a[i] > x) {
                  			sum += (a[i] - x);
                  			if (sum >= m) return true;
                  		}
                  	}
                  	return false;
                  }
                  
                  int main() {
                  	// freopen("in.txt", "r", stdin);
                  	cin >> n >> m;
                  	for (int i = 0; i < n; i++) scanf("%lld", a + i);
                  	ll l = 0, r = 0;
                  	for (int i = 0; i < n; i++) r = max(r, a[i]);
                  	 //for (int i = l; i <= r; i++) cout << i << " " << check(i) << endl;
                  	while (l < r) {
                  		ll mid = l + r + 1 >> 1;
                  		if (check(mid)) l = mid;
                  		else r = mid - 1;
                  	}
                  	printf("%lld", l);
                  	return 0;
                  }
                  
                  
                  • -4
                    @ 2024-11-3 15:46:04
                    #include<iostream>
                    #include<algorithm>
                    using namespace std;
                    int n,m,a[1114514];
                    bool check(int h)
                    {
                    	int sum = 0;
                    	for(int i = 1;i <= n;i++)
                    		if(a[i] > h)
                    			sum += (a[i]-h);
                    	return sum >= m;
                    }
                    int main()
                    {
                    	cin >> n >> m;
                    	for(int i = 1;i <= n;i++) cin >> a[i];
                    	int l = 0,r = 1000000000;
                    	while(l < r)
                    	{
                    		int mid = (l + r + 1) >> 1;
                    		if(check(mid)) l = mid;
                    		else r = mid - 1;
                    	}
                    	cout << l;
                    	return 0;
                    }
                    
                    • -5
                      @ 2024-12-17 16:38:32
                      #include<bits/stdc++.h>
                      using namespace std;
                      const int N=1e7+10;
                      int sum,ans,num;
                      int a[N],n,r;
                      int main(){
                      	cin>>n>>r;
                          for(int i=1;i<=n;i++){
                          	cin>>a[i];
                      	}
                          sort(a+1,a+n+1);
                          num=n;
                          while(sum<r){
                              sum+=(a[num]-a[num-1])*(n-num+1);
                              num--;
                          }
                          num++;
                          ans=a[num-1]+(sum-r)/(n-num+1);
                          cout<<ans;
                          return 0;
                      }
                      小鸟
                      
                      • @ 2024-12-17 16:41:05

                        飞舞

                      • @ 2024-12-17 16:41:19

                        没小鸟

                      • @ 2024-12-17 16:42:02
                        /*没小鸟的钟鼎皓盗我号骗分*/
                        /*小心slz钟鼎皓 药哥嗑药抄题解不改头文件!!!!!!!!!!!!!!!!!!!!!!!!!!*/
                        #include <bits/stdc++.h>
                        #define LL long long
                        using namespace std;
                        const int N = 1e6 + 10;
                        const int INF = 0x3f3f3f3f;
                        int n , m , l , r , ans;
                        int a [N];
                        bool check (int mid)
                        {
                        	int sum = 0;
                        	for (int i = 1; i <= n; i++)
                        	{
                        		if (a [i] > mid)
                        		{
                        			sum += a [i] - mid;
                        		}
                        	}
                        	return (sum >= m);
                        }
                        int main()
                        {
                        	    cin >> n >> m;
                        		for (int i = 1; i <= n; i++)
                        	    {
                        	    	cin >> a [i];
                        		}
                        		sort (a + 1 , a + 1 + n); 
                        		l = 1;
                        		r = a [n];
                        		while (l <= r)
                        		{
                        			int mid = (l + r) >> 1;
                        			if (check (mid))
                        			{
                        				ans = mid;
                        				l = mid + 1;
                        			}
                        			else 
                        			    r = mid - 1;
                        		} 
                        		cout << ans;
                        		return 0;
                        }
                        /*小心slz钟鼎皓或 上线盗你号 没小鸟的钟鼎皓盗我号骗分
                        
                        */
                        
                    • -5
                      @ 2022-10-15 16:43:17

                      cout << "293"

                      • 1

                      信息

                      ID
                      1280
                      时间
                      1000ms
                      内存
                      256MiB
                      难度
                      7
                      标签
                      递交数
                      949
                      已通过
                      214
                      上传者