记录编号 |
46688 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Nescafé 20] 玉蟾宫 |
最终得分 |
100 |
用户昵称 |
Makazeu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.486 s |
提交时间 |
2012-10-29 12:51:51 |
内存使用 |
3.79 MiB |
显示代码纯文本
#include <cstdlib>
#include <cstdio>
#include <stack>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN=1011;
int N,M,Num[MAXN][MAXN]={0};
stack<int> sta,wei; int w,h;
inline void init()
{
scanf("%d %d\n",&N,&M); char c;
for(int i=1;i<=N;i++)
{
for(int j=1;j<=M;j++)
{
c=0;while(c!='F'&&c!='R') scanf("%c",&c);
if(c=='F') Num[i][j]=Num[i-1][j]+1;
}
}
}
inline void Stack()
{
int ans=0;
sta.push(-1);wei.push(0);
for(int i=1;i<=N;i++)
{
for(int j=1;j<=M;j++)
{
w=0,h=Num[i][j];
while(h<sta.top())
{
w+=wei.top();
if(w*sta.top()>ans) ans=w*sta.top();
sta.pop(); wei.pop();
}
sta.push(h);wei.push(w+1);
} w=0;
while(sta.size()>1)
{
w+=wei.top();
if(sta.top()*w>ans) ans=sta.top()*w;
sta.pop(); wei.pop();
}
}
printf("%d\n",ans*3);
}
int main()
{
freopen("jademoon.in","r",stdin);
freopen("jademoon.out","w",stdout);
init();Stack();
return 0;
}