Submission #464697

#TimeUsernameProblemLanguageResultExecution timeMemory
464697ahmedfouadnewStrah (COCI18_strah)C++17
55 / 110
336 ms2008 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define pb push_back const int mod=1e9+7; int n,m; char c[303][303]; int sum[303][303]; int calc(int x,int y,int x2,int y2) { return sum[x2][y2]-sum[x-1][y2]-sum[x2][y-1]+sum[x-1][y-1]; } signed main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>c[i][j]; sum[i][j]=(c[i][j]=='.'); sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]; } } int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(c[i][j]=='#') continue; for(int l=1;l<=n;l++) { if(i+l-1>n) break; if(calc(i,j,i+l-1,j)!=l) break; int s=j,e=m; while(s<e) { int mid=s+(e-s+1)/2; if(calc(i,j,i+l-1,mid)==l*(mid-j+1)) { s=mid; } else { e=mid-1; } } int sz=(s-j+1); ans+=l*(sz*(sz+1)/2); } } } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...