제출 #517585

#제출 시각아이디문제언어결과실행 시간메모리
517585azberjibiouDango Maker (JOI18_dango_maker)C++17
100 / 100
309 ms109236 KiB
#include <bits/stdc++.h> #define gibon ios::sync_with_stdio(false); cin.tie(0); #define fir first #define sec second #define pdd pair<double, double> #define pii pair<int, int> #define pll pair<ll, ll> #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") typedef long long ll; using namespace std; int dx[4]={0, 1, 0, -1}, dy[4]={1, 0, -1 , 0}; const int mxN=3100; const int mxM=1800010; const int mxK=104; const ll MOD=1000000007; const ll INF=8000000000000000001; int N, M; char S[mxN][mxN]; bool ok[mxN][mxN][2]; int dp[mxN][mxN][2]; int ans; int main() { gibon cin >> N >> M; for(int i=2;i<=N+1;i++) cin >> S[i]+2; for(int i=2;i<=N+1;i++) { for(int j=2;j<=M+1;j++) { if(S[i][j]=='R' && S[i][j+1]=='G' && S[i][j+2]=='W') { ok[i][j][0]=true; } if(S[i][j]=='R' && S[i+1][j]=='G' && S[i+2][j]=='W') { ok[i][j][1]=true; } } } for(int i=4;i<=N+M+2;i++) { for(int j=max(2, i-M-1);j<=min(i-2, N+1);j++) { dp[j][i-j][0]=max(dp[j-1][i-j+1][0]+ok[j][i-j][0], dp[j-2][i-j+2][1]); dp[j][i-j][1]=max(dp[j-1][i-j+1][1]+ok[j][i-j][1], dp[j][i-j][0]); } ans+=dp[min(i-2, N+1)][i-min(i-2, N+1)][1]; } cout << ans; }

컴파일 시 표준 에러 (stderr) 메시지

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:28:43: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   28 |     for(int i=2;i<=N+1;i++)    cin >> S[i]+2;
      |                                       ~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...