Skip to content

Instantly share code, notes, and snippets.

@ulugbekrozimboyev
Created February 1, 2016 07:18
Show Gist options
  • Save ulugbekrozimboyev/de97274569eec54f78b7 to your computer and use it in GitHub Desktop.
Save ulugbekrozimboyev/de97274569eec54f78b7 to your computer and use it in GitHub Desktop.
package main
import "fmt"
var (
n,m int
arr [][]int
)
func calculateArea(arr *[][]int, x,y int, clear bool) int {
area := 1;
i := 1;
a := *arr
for {
if x - i >= 0 && x + i < n && y - i >= 0 && y + i < m && a[x - i][y] == 1 && a[x + i][y] == 1 && a[x][y - i] == 1 && a[x][y + i] == 1 {
if clear {
a[x - i][y] = 0
a[x + i][y] = 0
a[x][y - i] = 0
a[x][y + i] = 0
}
area += 4
i++
} else {
break
}
}
*arr = a
return area;
}
func findMaxAreaFromSubRectangle(arr *[][]int) int {
max := 0;
tmp := *arr
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if tmp[i][j] != 1 {
continue
}
area := calculateArea(arr, i, j, false)
if area > max {
max = area
}
}
}
return max;
}
func main() {
//Enter your code here. Read input from STDIN. Print output to STDOUT
fmt.Scan(&n, &m)
arr = make([][]int,0, 15)
for i := 0; i < n; i++ {
arr1 := make([]int,0,15)
var tmp string
fmt.Scan(&tmp)
//fmt.Println(tmp)
for j := 0; j < len(tmp); j++ {
if tmp[j:j+1] == "G" {
arr1 = append(arr1, 1)
} else {
arr1 = append(arr1, 0)
}
}
arr = append(arr, arr1)
}
//fmt.Printf("%v\n", arr)
cap := 0
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if arr[i][j] != 1 {
continue
}
b := arr[😏
area1 := calculateArea(&b, i, j, true)
area2 := findMaxAreaFromSubRectangle(&b)
tmp := area1 * area2;
if cap < tmp {
cap = tmp
}
}
}
fmt.Println(cap)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment