제출 #1138481

#제출 시각아이디문제언어결과실행 시간메모리
1138481jay_jayjayDango Maker (JOI18_dango_maker)C++20
100 / 100
342 ms9316 KiB
extern "C" int __lsan_is_turned_off() { // YAYY return 1; }; #include <bits/stdc++.h> using namespace std; #define all(x) (x).begin(),(x).end() #define ll long long struct { template<typename T> operator T() { T x; cin>>x; return x; } } in; int main() { int n=in, m=in; vector mp(n, vector<char>(m)); for(auto&r:mp)for(auto&c:r)c=in; int ans=0; for(int i=0;i<n+m-1;i++) { int x,y; if(i<m) y=0,x=i; else x=m-1, y=i-m+1; auto f = [&](int i, int j) -> int { if(i<0||i>=m||j<0||j>=n) return 0; return mp[j][i] == 'R'; }; auto g = [&](int i, int j) -> int { if(i<0||i>=m||j<0||j>=n) return 0; return mp[j][i] == 'W'; }; int dp1=0, dp2=0, dp3=0; while(x>=0 && y<n) { int ndp1=0, ndp2=0, ndp3=0; ndp3 = max({dp1, dp2, dp3}); ndp1 = max(dp3, dp1) + f(x-1,y) * (mp[y][x]=='G') * g(x+1,y); ndp2 = max(dp3, dp2) + f(x,y-1) * (mp[y][x]=='G') * g(x,y+1); dp1 = ndp1; dp2 = ndp2; dp3 = ndp3; x--;y++; } ans += max({dp1, dp2, dp3}); } printf("%d\n",ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...