language: C (gcc-4.3.4)
date: 103 days 12 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include<stdio.h>
#define min(a,b) ((a)<(b)?(a):(b))
struct rect{
        int width;
        int height;
        }r[1001][1001];
int main()
{
int m,n,i,j,k,l,test,t;
char arr[2002][2002];
int rarr[1002][1002];
int maxarea,area,a1,a2;
scanf("%d",&test);
for(t=0;t<test;t++)
{
        scanf("%d%d",&m,&n);
        k=0;
        l=0;
        for(i=0;i<m;i++)
        {
                for(j=0;j<n;j++)
                {
                r[i][j].width=0;
                r[i][j].height=0;
                }
        }
        for(i=0;i<m;i++)
        {       
 
        l=0;
                for(j=0;j<2*n;j++)
                        {
                        scanf("%c",&arr[i][j]);
                        if(arr[i][j]=='F')
                                rarr[k][l++]=1;
                        else if(arr[i][j]=='R')
                                rarr[k][l++]=0;
                        }
        k++;
        }
        if(rarr[m-1][n-1]==1)
        {
                r[m-1][n-1].width=1;
                r[m-1][n-1].height=1;
        }
        for(i=m-2;i>=0;i--)
        {       if(rarr[i][n-1]==1)
                {
                        if(rarr[i+1][n-1]==0)
                        {
                                r[i][n-1].width=1;
                                r[i][n-1].height=1;
                        }
                        else
                        {
                        r[i][n-1].width=1;
                        r[i][n-1].height=r[i+1][n-1].height+1;;
                        }
                }
        }
        for(i=n-2;i>=0;i--)
        {       if(rarr[m-1][i]==1)
                {
                        if(rarr[m-1][i+1]==0)
                        {
                                r[m-1][i].width=1;
                                r[m-1][i].height=1;
                        }
                        else
                        {
                        r[m-1][i].width=r[m-1][i+1].width+1;
                        r[m-1][i].height=1;
                        }
                }
        }
        for(i=m-2;i>=0;i--)
        {
                for(j=n-2;j>=0;j--)
                {
 
                        if(rarr[i][j]==1)
                        {
                                //case 1
                                if((rarr[i+1][j]==0)&&(rarr[i][j+1]==0))
                                {
                                r[i][j].width=1;
                                r[i][j].height=1;
                                }
                                //case 2
                                else if((rarr[i+1][j]==0)&&(rarr[i][j+1]==1))
                                {
                                        r[i][j].width=r[i][j+1].width+1;
                                        r[i][j].height=min(r[i][j+1].height,r[i+1][j].height+1);
                                }
                                //case 3
                                else if((rarr[i+1][j]==1)&&(rarr[i][j+1]==0))
                                {
                                        r[i][j].width=min(r[i+1][j].width,r[i][j+1].width+1);
                                        r[i][j].height=r[i+1][j].height+1;
                                }
                                //case 4
                                else if((rarr[i+1][j]==1)&&(rarr[i][j+1]==1))
                                {
                                        a1=r[i][j+1].width*r[i][j+1].height;
                                        a2=r[i+1][j].width*r[i+1][j].height;
                                        if(a1>a2)
                                        {
                                        r[i][j].width=r[i][j+1].width+1;
                                        r[i][j].height=min(r[i][j+1].height,r[i+1][j].height+1);
                                        }
                                        else
                                        {
                                        r[i][j].width=min(r[i+1][j].width,r[i][j+1].width+1);
                                        r[i][j].height=r[i+1][j].height+1;
                                        }
                                }
                        
                        
                        }
                }
        }
        maxarea=r[0][0].width*r[0][0].height;
        for(i=0;i<m;i++)
                {
                        for(j=0;j<n;j++)
                        {
                        area=r[i][j].width*r[i][j].height;
                        if(area>maxarea)
                        maxarea=area;
                        }
                }
        maxarea=maxarea*3;
        printf("%d\n",maxarea);
}
return 0;
}