제출 #1128705

#제출 시각아이디문제언어결과실행 시간메모리
1128705the_ZHERBomb (IZhO17_bomb)C++20
30 / 100
1103 ms107988 KiB
#include <bits/stdc++.h> #define int long long #define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; const int N = 2505; const int inf = 1e9; const int mod=1e9+7; struct edge{ int pos,val,t; }; int dp[N][N]; string c[N]; int dp1[N][N]; int n,m; signed main(){ //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); // boost cin>>n>>m; for(int i=1;i<=n;i++){ cin>>c[i]; for(int j=0;j<m;j++){ int x=0; if(c[i][j]=='1'){ x=1; } dp[i][j+1]=dp[i-1][j+1]+dp[i][j]-dp[i-1][j]+x; } } int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ int cnt=0; for(int y=1;y+i-1<=n;y++){ for(int x=1;x+j-1<=m;x++){ int x1=x+(j-1); int y1=y+(i-1); int cnt=dp[y1][x1]-dp[y1][x - 1]-dp[y - 1][x1]+dp[y - 1][x - 1]; if(cnt==i*j){ dp1[y][x]++; dp1[y1+1][x]--; dp1[y][x1+1]--; dp1[y1+1][x1+1]++; } } } int cnt1=0; for(int y=1;y<=n;y++){ for(int x=1;x<=m;x++){ dp1[y][x]+=dp1[y-1][x]+dp1[y][x-1]-dp1[y-1][x-1]; if(dp1[y][x]>0){ cnt1++; } } } if(cnt1==dp[n][m]){ ans=max(ans,i*j); } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ dp1[i][j]=0; } } } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...