Submission #467950

#TimeUsernameProblemLanguageResultExecution timeMemory
467950RibljiKeksicDango Maker (JOI18_dango_maker)C++14
100 / 100
216 ms194880 KiB
#include <bits/stdc++.h>

using namespace std;

int n,m,DP[3010][3010][5],u;
string s[3010],f;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> m;
    for(int i=0; i<n; i++)
    {
        cin >> f;
        s[i+1] += ' ';
        s[i+1] += f;
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            DP[i][j][0] = max(DP[i-1][j+1][0],max(DP[i-1][j+1][1],DP[i-1][j+1][2]));
            if(s[i][j]=='G')
            {
                if(s[i][j-1]=='R' && s[i][j+1]=='W') DP[i][j][1] = max(DP[i-1][j+1][0],DP[i-1][j+1][1]) + 1;
                if(s[i-1][j]=='R' && s[i+1][j]=='W') DP[i][j][2] = max(DP[i-1][j+1][0],DP[i-1][j+1][2]) + 1;
            }
            if(j==1)
            {
                u += max(DP[i][j][0],max(DP[i][j][1],DP[i][j][2]));
            }
            else
            {
                if(i==n)
                {
                    u += max(DP[i][j][0],max(DP[i][j][1],DP[i][j][2]));
                }
            }
        }
    }
    cout << u <<endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...