Submission #610882

# Submission time Handle Problem Language Result Execution time Memory
610882 2022-07-28T17:03:08 Z Urvuk3 Dango Maker (JOI18_dango_maker) C++17
0 / 100
1 ms 468 KB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
ll INF=1e9,LINF=1e18,MOD=1e9+7; const ll MAXN=1e3+1,MAXA=1e5+1;
#define fi first
#define se second
#define pii pair<int,int>
#define mid ((l+r)/2)
#define sz(a) (int((a).size()))
#define all(a) a.begin(),a.end()
#define endl "\n"
#define PRINT(x) cerr<<#x<<'-'<<x<<endl<<flush;
#define pb push_back
#define PRINTvec(x) { cerr<<#x<<"-"; for(auto i_:x) cerr<<i_<<" "; cerr<<endl; }
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

void Solve(){
    int N,M; cin>>N>>M;
    vector<vector<char>> a(N+3,vector<char>(M+3,'@'));
    for(int i=1;i<=N;i++){
        string s; cin>>s;
        for(int j=1;j<=M;j++){
            a[i][j]=s[j-1];
        }
    }
    vector<vector<vector<bool>>> start(N+M+1,vector<vector<bool>>(M+1,(vector<bool>(2,false))));
    for(int i=1;i<=N;i++){
        for(int j=1;j<=M;j++){
            if(a[i][j]=='R' && a[i+1][j]=='G' && a[i+2][j]=='W') start[i+j][i][1]=true;
            if(a[i][j]=='R' && a[i][j+1]=='G' && a[i][j+2]=='W') start[i+j][i][0]=true;
        }
    }

    function<void(int&,int)> smax=[&](int& a,int b){
        a=max(a,b);
    };

    int res=0;
    for(int z=2;z<=N+M;z++){
        vector<vector<vector<int>>> dp(N+1,vector<vector<int>>(2,vector<int>(2,-INF)));
        dp[0][0][0]=0;
        for(int i=1;i<=N;i++){
            for(int x=0;x<2;x++){
                for(int y=0;y<2;y++){
                    smax(dp[i][0][x],dp[i-1][x][y]);
                    if(start[z][i][0] && x==0 && y==0) smax(dp[i][0][x],dp[i-1][x][y]+1);
                    if(start[z][i][1]) smax(dp[i][1][x],dp[i-1][x][y]+1);
                }
            }
        }
        int tmp=0;
        for(int i=0;i<2;i++){
            for(int j=0;j<2;j++){
                tmp=max(tmp,dp[N][i][j]);
            }
        }
        res+=tmp;
    }
    cout<<res<<endl;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t; t=1;
    //cin>>t;
    while(t--){
        Solve();
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Runtime error 1 ms 468 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Runtime error 1 ms 468 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Runtime error 1 ms 468 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -