제출 #235750

#제출 시각아이디문제언어결과실행 시간메모리
235750AutoratchDango Maker (JOI18_dango_maker)C++14
13 / 100
5 ms568 KiB
#include <bits/stdc++.h> using namespace std; const int N = 3002; int m,n,ans; string c[N]; bool visited[N][N],val[N][N][2]; void solve(int x,int y) { int hor = 0,ver = 0; for(int i = x,j = y;i>=1 and j>=1 and i<=m and j<=n;i++,j--) { if(i!=x) { if(c[i][j]!='G') break; if(!((val[i][j][1] and val[i-1][j+1][0])or(val[i][j][0] and val[i-1][j+1][1]))) break; } visited[i][j] = true; if(val[i][j][0]) ver++; if(val[i][j][1]) hor++; } for(int i = x-1,j = y+1;i>=1 and j>=1 and i<=m and j<=n;i--,j++) { if(c[i][j]!='G') break; if(!((val[i][j][1] and val[i+1][j-1][0])or(val[i][j][0] and val[i+1][j-1][1]))) break; visited[i][j] = true; if(val[i][j][0]) ver++; if(val[i][j][1]) hor++; } ans+=max(hor,ver); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> m >> n; for(int i = 1;i <= m;i++) cin >> c[i],c[i] = " "+c[i]; for(int i = 1;i <= m;i++) for(int j = 1;j <= n;j++) { if(c[i-1][j]=='R' and c[i][j]=='G' and c[i+1][j]=='W') val[i][j][0] = true; if(c[i][j-1]=='R' and c[i][j]=='G' and c[i][j+1]=='W') val[i][j][1] = true; } for(int i = 1;i <= m;i++) for(int j = 1;j <= n;j++) if(!visited[i][j] and c[i][j]=='G') solve(i,j); cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...