Submission #233923

#TimeUsernameProblemLanguageResultExecution timeMemory
233923nicolaalexandraDango Maker (JOI18_dango_maker)C++14
100 / 100
538 ms88568 KiB
#include <bits/stdc++.h> #define DIM 3001 using namespace std; int dp[DIM][DIM][2]; char a[DIM][DIM]; int n,m,i,j; int verif_vert (int i, int j){ if (a[i-2][j] == 'R' && a[i-1][j] == 'G' && a[i][j] == 'W') return 1; return 0; } int verif_oriz (int i, int j){ if (a[i][j-2] == 'R' && a[i][j-1] == 'G' && a[i][j] == 'W') return 1; return 0; } int main (){ // ifstream cin ("date.in"); // ofstream cout ("date.out"); cin>>n>>m; for (i=1;i<=n;i++) cin>>a[i]+1; /** R G W R G W R G W **/ /// dp[i][j][0/1] - nr maxim de piese pe care le pot lua pana la i,j /// 0 - orizontal, 1 - vertical for (i=1;i<=n;i++) for (j=1;j<=m;j++){ /// nu fac nimic dp[i][j][0] = max (dp[i-1][j+1][0],dp[i-1][j+1][1]); dp[i][j][1] = max (dp[i-1][j+1][0],dp[i-1][j+1][1]); /// incerc sa pun piese orizontala sau verticala if (verif_oriz(i,j+1)) dp[i][j][0] = max (dp[i][j][0],dp[i-1][j+1][0] + 1); if (verif_vert(i+1,j)) dp[i][j][1] = max (dp[i][j][1],dp[i-1][j+1][1] + 1); } int sol = 0; for (i=1;i<=n;i++) sol += max(dp[i][1][0],dp[i][1][1]); for (i=2;i<=m;i++) sol += max (dp[n][i][0],dp[n][i][1]); cout<<sol; return 0; }

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:26:18: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         cin>>a[i]+1;
              ~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...