90分求助
查看原帖
90分求助
642486
Compilation_Error楼主2024/3/29 19:09
#include<bits/stdc++.h>
#define _for(i,x,y) for(int i=x;i<=y;++i)
#define _forp(i,x,y,z) for(int i=x;i<=y;i+=z)
#define _rep(i,x,y) for(int i=x;i<y;++i)
using namespace std;
#define int long long
int n,m,a[205][205];
int sum[205][205];
bool check(int s,int l,int r,int w){
	int j=w,Ans=0,sm=0;
	_for(i,1,j){
		sm+=sum[r][i]-sum[l-1][i];
	}
	Ans=sm;
	_for(i,1,m){
		if(j>m) break;
		Ans=max(Ans,sm);
		sm-=sum[r][i]-sum[l-1][i];
		j++;
		sm+=sum[r][j]-sum[l-1][j];
	}
	return Ans>=0;
}
signed main(){
//	freopen("test.in","r",stdin);
//	freopen("test.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
	cin>>n>>m;
	_for(i,1,n){
		_for(j,1,m){
			cin>>a[i][j];
			sum[i][j]=sum[i-1][j]+a[i][j];
		}
	}
	int ans=-1;
	_for(i,1,n){
		_for(j,i,n){
			int t=0,l=1,r=m;
			while(l<=r){
				int mid=l+r>>1;
				if(check(mid*(j-i+1),i,j,mid)) t=max(t,mid),l=mid+1;
				else r=mid-1;
			}
			ans=max(ans,t*(j-i+1));
		}
	}
	cout<<ans<<'\n';
	return 0;
}




2024/3/29 19:09
加载中...