A了一个点
#include<iostream>
using namespace std;
int flag;
int t[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int maxn=-1;
int n,m;
char a[1501][1501];
int b[1501];
int sum,ans;
void dfs(int x,int y){
a[x][y]='.';
sum++;
for(int i=0;i<8;i++){
int xx=x+t[i][0];
int yy=y+t[i][1];
if(xx>0&&xx<=n&&yy>0&&yy<=m&&a[xx][yy]=='*'){
dfs(xx,yy);
}
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='*'){
flag=0;
sum=0;
dfs(i,j);
for(int k=1;k<=ans;k++){
if(b[k]==sum){
flag=1;
b[k]+=sum;
break;
}
}
if(!flag)b[++ans]=sum;
}
}
}
for(int i=1;i<=ans;i++){
if(maxn<b[i])maxn=b[i];
}
cout<<ans<<" "<<maxn;
}