Submission #199738

#TimeUsernameProblemLanguageResultExecution timeMemory
199738MercenaryDango Maker (JOI18_dango_maker)C++14
0 / 100
5 ms504 KiB
#include<bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define taskname "A"

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int,int> ii;
const int maxn = 3e3 + 5;
int dp[maxn][2];
int n , m;
string s[maxn];
bool Up(int i ,  int j){
    return i > 0 && i + 1 < m && s[i][j] == 'G' && s[i - 1][j] == 'R' && s[i + 1][j] == 'W';
}
bool Rig(int i , int  j){
    return j > 0 && j + 1 < n && s[i][j] == 'G' && s[i][j - 1] == 'R' && s[i][j + 1] == 'W';
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    if(fopen(taskname".INP","r")){
		freopen(taskname".INP", "r",stdin);
		freopen(taskname".OUT", "w",stdout);
    }
    cin >> m >> n;
    for(int i = 0 ; i < m ; ++i)cin >> s[i];
    int res = 0;
    for(int dia = 0 ; dia <= m + n - 2 ; ++dia){
        int tmp = 0;
        for(int i = max(0,dia-n+1) ; i < min(dia+1,m) ; ++i){
            if(i == max(0,dia-n+1)){
                dp[i][0] = dp[i][1] = dp[i][2] = 0;
                if(Up(i,dia-i))dp[i][1] = 1;
                if(Rig(i,dia-i))dp[i][2] = 1;
                tmp = max(dp[i][1],dp[i][2]);
            }else{
                dp[i][0] = max({dp[i - 1][0] , dp[i - 1][1] , dp[i - 1][2]});
                if(Up(i,dia-i))dp[i][1] = max(dp[i - 1][0] , dp[i - 1][1]) + 1;
                else dp[i][1] = 0;
                if(Rig(i,dia-i))dp[i][2] = max(dp[i - 1][0] , dp[i - 1][2]) + 1;
                else dp[i][2] = 0;
                tmp = max({tmp , dp[i][0] , dp[i][1] ,  dp[i][2]});
            }
//            cout << dia << " " << dp[i][0] << " " << dp[i][1] << " " << dp[i][2] << endl;
        }
        res += tmp;
    }
    cout << res;
}

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:27:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen(taskname".INP", "r",stdin);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
dango_maker.cpp:28:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   freopen(taskname".OUT", "w",stdout);
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
dango_maker.cpp:37:46: warning: array subscript is above array bounds [-Warray-bounds]
                 dp[i][0] = dp[i][1] = dp[i][2] = 0;
                                       ~~~~~~~^
dango_maker.cpp:39:40: warning: array subscript is above array bounds [-Warray-bounds]
                 if(Rig(i,dia-i))dp[i][2] = 1;
                                 ~~~~~~~^
dango_maker.cpp:40:43: warning: array subscript is above array bounds [-Warray-bounds]
                 tmp = max(dp[i][1],dp[i][2]);
                                    ~~~~~~~^
dango_maker.cpp:42:74: warning: array subscript is above array bounds [-Warray-bounds]
                 dp[i][0] = max({dp[i - 1][0] , dp[i - 1][1] , dp[i - 1][2]});
                                                               ~~~~~~~~~~~^
dango_maker.cpp:45:74: warning: array subscript is above array bounds [-Warray-bounds]
                 if(Rig(i,dia-i))dp[i][2] = max(dp[i - 1][0] , dp[i - 1][2]) + 1;
                                                               ~~~~~~~~~~~^
dango_maker.cpp:45:40: warning: array subscript is above array bounds [-Warray-bounds]
                 if(Rig(i,dia-i))dp[i][2] = max(dp[i - 1][0] , dp[i - 1][2]) + 1;
                                 ~~~~~~~^
dango_maker.cpp:46:29: warning: array subscript is above array bounds [-Warray-bounds]
                 else dp[i][2] = 0;
                      ~~~~~~~^
dango_maker.cpp:47:64: warning: array subscript is above array bounds [-Warray-bounds]
                 tmp = max({tmp , dp[i][0] , dp[i][1] ,  dp[i][2]});
                                                         ~~~~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...