# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
833808 | vjudge1 | Bomb (IZhO17_bomb) | C++17 | 1094 ms | 32592 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int MX = 2505;
char inp[MX][MX];
int board[MX][MX];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n,m;
cin >> n >> m;
for(int i =1 ; i<= n ; i++)
{
for(int j =1 ; j <= m;j++)
{
cin >> inp[i][j];
board[i][j] = inp[i][j] - '0';
board[i][j] += board[i][j-1];
}
}
for(int i =1 ; i<= n ; i++)
{
for(int j =1 ; j <= m;j++)
{
board[i][j] += board[i-1][j];
}
}
// for(int i =1 ; i<= n ; i++)
// {
// for(int j =1 ; j <= m;j++)
// {
// cout << board[i][j] <<" ";
// }
// cout << "\n";
// }
int ans = 0;
for(int h = 1; h <= n; h++)
{
for(int w = 1; w <= m ; w++)
{
vector<vector<bool>> ok(MX, vector<bool>(MX,0));
bool y = 1;
for(int i =1 ; i<= n ; i++)
{
for(int j =1 ; j <= m;j++)
{
if(inp[i][j] != '1'){
continue;
}
int sum = board[i+h-1][j+w-1];
sum -= board[i-1][j+w-1];
sum -= board[i+h-1][j-1];
sum += board[i-1][j-1];
if(sum != h*w)
{
if(ok[i][j]){
continue;
}
y = 0;
break;
}else{
for(int oi = i ; oi <= i+h-1; oi++){
for(int oj = j; oj <= j+w-1;oj++){
ok[oi][oj] = 1;
}
}
}
}
if(!y){
break;
}
}
if(y){
ans = max(ans, h*w);
}
}
}
cout << ans;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |