제출 #1066120

#제출 시각아이디문제언어결과실행 시간메모리
1066120MalixDango Maker (JOI18_dango_maker)C++14
33 / 100
263 ms604 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> tii; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define MP make_pair #define LSOne(s) ((s)&(-s)) ll INF=1000000000000000010; int inf=1e9+10; ll M=1e9+7; int main() { int n,m;cin>>n>>m; vector<vector<char>> a(n,vector<char>(m)); REP(i,0,n)REP(j,0,m)cin>>a[i][j]; int ans=0; REP(j,1,n+m+1){ vii dp(n,vi(3,0)); REP(i,0,n){ int pos=j-i; if(i!=0)dp[i][0]=*max_element(dp[i-1].begin(),dp[i-1].end()); if(pos>=m||a[i][pos]!='G')continue; if(i==0&&pos-1>=0&&pos+1<m&&a[i][pos-1]=='R'&&a[i][pos+1]=='W')dp[i][1]=1; if(i!=0&&pos-1>=0&&pos+1<m&&a[i][pos-1]=='R'&&a[i][pos+1]=='W')dp[i][1]=max(dp[i-1][0],dp[i-1][1])+1; if(i-1>=0&&i+1<n&&a[i-1][pos]=='R'&&a[i+1][pos]=='W')dp[i][2]=max(dp[i-1][0],dp[i-1][2])+1; } int mx=0; REP(i,0,n)mx=max(mx,*max_element(dp[i].begin(),dp[i].end())); ans+=mx; } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...