Submission #66863

#TimeUsernameProblemLanguageResultExecution timeMemory
66863ekremDango Maker (JOI18_dango_maker)C++98
100 / 100
1759 ms143860 KiB
#include <bits/stdc++.h>
#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define N 3005
using namespace std;

int n, m, ans, a[N][N], dp[N][N][3];
char c;


//dur = 0 hic koyma
//dur = 1 yatak
//dur = 2 dikey
int f(int i, int j, int dur){
	if(i > n or j > m or i < 1 or j < 1)
		return 0;
	int &r = dp[i][j][dur];
	if(r != -1)
		return r;
	int art = 0;
	if(dur == 1)
		if(a[i][j] == 2 and a[i][j - 1] == 1 and a[i][j + 1] == 3)
			art = 1;
	if(dur == 2)
		if(a[i][j] == 2 and a[i - 1][j] == 1 and a[i + 1][j] == 3)
			art = 1;
	if(dur == 0)
		r = max(f(i - 1, j + 1, 0), max(f(i - 1, j + 1, 1), f(i - 1, j + 1, 2)));
	if(dur == 1)
		r = max(f(i - 1, j + 1, 0), f(i - 1, j + 1, 1)) + art;
	if(dur == 2)
		r = max(f(i - 1, j + 1, 2), f(i - 1, j + 1, 0)) + art;
	return r;
}

int main() {
	// freopen("in.txt", "r", stdin);
	// freopen("out.txt", "w", stdout);
	memset(dp, -1, sizeof dp);
	scanf("%d %d",&n ,&m);
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){
			scanf(" %c",&c);
			if(c == 'R')
				a[i][j] = 1;
			if(c == 'G')
				a[i][j] = 2;
			if(c == 'W')
				a[i][j] = 3;
		}
	for(int i = 1; i <= n; i++)
		ans += max(f(i, 1, 0) , f(i, 1, 2));
	for(int i = 2; i <= m; i++)
		ans += max(f(n, i, 0) , f(n, i, 1));
	printf("%d\n",ans);
	return 0;
}

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:42:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n ,&m);
  ~~~~~^~~~~~~~~~~~~~~~
dango_maker.cpp:45:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf(" %c",&c);
    ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...