比赛 20240913练习 评测结果 WWWWWTTTTT
题目名称 牛宫 最终得分 0
用户昵称 dream 运行时间 10.089 s
代码语言 C++ 内存使用 3.73 MiB
提交时间 2024-09-13 21:59:29
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=205;
  4. int s[N][N];
  5. int mp[N][N];
  6. int n,m,ans=0;
  7. void read(int &x){
  8. char c;
  9. int sum=0,f=1;
  10. c=getchar();
  11. while(c<'0'||c>'9'){
  12. if(c=='-'){
  13. f=-1;
  14. }
  15. c=getchar();
  16. }
  17. while(c>='0'&&c<='9'){
  18. sum=sum*10+c-'0';
  19. c=getchar();
  20. }
  21. x=sum*f;
  22. }
  23. int main(){
  24. freopen("long.in","r",stdin);
  25. freopen("long.out","w",stdout);
  26. read(n);
  27. read(m);
  28. for(int i=1;i<=n;i++){
  29. for(int j=1;j<=m;j++){
  30. read(mp[i][j]);
  31. }
  32. }
  33. s[1][1]=mp[1][1];
  34. for(int i=2;i<=n;i++){
  35. s[1][i]=s[1][i-1]+mp[1][i];
  36. s[i][1]=s[i-1][1]+mp[i][1];
  37. }
  38. for(int i=2;i<=n;i++){
  39. for(int j=2;j<=m;j++){
  40. s[i][j]=mp[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
  41. }
  42. }
  43. // for(int i=1;i<=n;i++){
  44. // for(int j=1;j<=m;j++){
  45. // cout<<s[i][j]<<" ";
  46. // }cout<<"\n";
  47. // }
  48. for(int i=1;i<=n;i++){
  49. for(int j=i;j<=n;j++){
  50. if(s[1][j]-s[1][i-1]>0){
  51. ans=max(ans,j-i+1);
  52. }
  53. if(s[j][1]-s[i-1][1]>0){
  54. ans=max(ans,j-i+1);
  55. }
  56. }
  57. }
  58. for(int i=1;i<=n;i++){
  59. for(int j=1;j<=n;j++){
  60. for(int q=i;q<=n;q++){
  61. for(int k=j;k<=n;k++){
  62. // cout<<i<<" "<<j<<" "<<q<<" "<<k<<" "<<s[q][k]-s[i][k]-s[q][j]+s[i][j]<<"\n";
  63. if(s[q][k]-s[i][k]-s[q][j]+s[i][j]>0){
  64. ans=max(ans,(q-i)*(k-j));
  65. }
  66. }
  67. }
  68. }
  69. }
  70. printf("%d",ans);
  71. return 0;
  72. }
  73.  
  74. // -1 0
  75.  
  76. //-2 -2
  77.