Submission #54664

# Submission time Handle Problem Language Result Execution time Memory
54664 2018-07-04T11:39:56 Z dennisstar Tents (JOI18_tents) C++11
0 / 100
9 ms 2464 KB
#include <bits/stdc++.h>
#define MOD 1000000007
int H, W;
long long Dp[3010][3010];
int main()
{
	scanf("%d%d", &H, &W);
	int i, j;
	for (i=0; i<=H; i++) Dp[i][0]=1;
	for (i=0; i<=W; i++) Dp[0][i]=1;
	for (i=1; i<=H; i++) Dp[i][1]=4*i+i*(i-1)/2+1;
	for (j=1; j<=W; j++) Dp[1][j]=4*j+j*(j-1)/2+1;
	for (i=2; i<=H; i++) {
		for(j=2; j<=W; j++) {
			Dp[i][j]=Dp[i-1][j-1]*5;
			Dp[i][j]+=Dp[i-1][j-2]*(j-1)*5+Dp[i-2][j-1]*(i-1)*5; Dp[i][j]%=MOD;
			Dp[i][j]+=Dp[i-2][j-2]*(j-1)*(i-1)*2; Dp[i][j]%=MOD;
			if (i>=3) Dp[i][j]+=Dp[i-3][j-1]*(i-1)*(i-2)/2; Dp[i][j]%=MOD;
			if (j>=3) Dp[i][j]+=Dp[i-1][j-3]*(j-1)*(j-2)/2; Dp[i][j]%=MOD;
			Dp[i][j]+=Dp[i-2][j-2]*16*(i-1)*(j-1); Dp[i][j]%=MOD;
			if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*(i-1)*(j-1)*(i-2)*4; Dp[i][j]%=MOD;
			if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*(j-1)*(i-1)*(j-2)*4; Dp[i][j]%=MOD;
			if (i>=3&&j>=3) Dp[i][j]+=Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)%MOD); Dp[i][j]%=MOD;
			if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*(i-1)*(i-2)*(j-1)*2; Dp[i][j]%=MOD;
			if (i>=4) Dp[i][j]+=Dp[i-4][j-2]*((i-1)*(i-2)/2*(j-1)*(i-3)%MOD); Dp[i][j]%=MOD;
			if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*(j-1)*(j-2)*(i-1)*2; Dp[i][j]%=MOD;
			if (j>=4) Dp[i][j]+=Dp[i-2][j-4]*((j-1)*(j-2)/2*(i-1)*(j-3)%MOD); Dp[i][j]%=MOD;
			if (i>=3&&j>=3) Dp[i][j]+=Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)/4%MOD); Dp[i][j]%=MOD;
		}
	}
	printf("%d", Dp[H][W]-1);
	return 0;
}

Compilation message

tents.cpp: In function 'int main()':
tents.cpp:18:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3) Dp[i][j]+=Dp[i-3][j-1]*(i-1)*(i-2)/2; Dp[i][j]%=MOD;
    ^~
tents.cpp:18:52: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3) Dp[i][j]+=Dp[i-3][j-1]*(i-1)*(i-2)/2; Dp[i][j]%=MOD;
                                                    ^~
tents.cpp:19:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=3) Dp[i][j]+=Dp[i-1][j-3]*(j-1)*(j-2)/2; Dp[i][j]%=MOD;
    ^~
tents.cpp:19:52: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=3) Dp[i][j]+=Dp[i-1][j-3]*(j-1)*(j-2)/2; Dp[i][j]%=MOD;
                                                    ^~
tents.cpp:21:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*(i-1)*(j-1)*(i-2)*4; Dp[i][j]%=MOD;
    ^~
tents.cpp:21:58: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*(i-1)*(j-1)*(i-2)*4; Dp[i][j]%=MOD;
                                                          ^~
tents.cpp:22:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*(j-1)*(i-1)*(j-2)*4; Dp[i][j]%=MOD;
    ^~
tents.cpp:22:58: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*(j-1)*(i-1)*(j-2)*4; Dp[i][j]%=MOD;
                                                          ^~
tents.cpp:23:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3&&j>=3) Dp[i][j]+=Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)%MOD); Dp[i][j]%=MOD;
    ^~
tents.cpp:23:74: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3&&j>=3) Dp[i][j]+=Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)%MOD); Dp[i][j]%=MOD;
                                                                          ^~
tents.cpp:24:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*(i-1)*(i-2)*(j-1)*2; Dp[i][j]%=MOD;
    ^~
tents.cpp:24:58: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3) Dp[i][j]+=Dp[i-3][j-2]*(i-1)*(i-2)*(j-1)*2; Dp[i][j]%=MOD;
                                                          ^~
tents.cpp:25:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=4) Dp[i][j]+=Dp[i-4][j-2]*((i-1)*(i-2)/2*(j-1)*(i-3)%MOD); Dp[i][j]%=MOD;
    ^~
tents.cpp:25:70: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=4) Dp[i][j]+=Dp[i-4][j-2]*((i-1)*(i-2)/2*(j-1)*(i-3)%MOD); Dp[i][j]%=MOD;
                                                                      ^~
tents.cpp:26:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*(j-1)*(j-2)*(i-1)*2; Dp[i][j]%=MOD;
    ^~
tents.cpp:26:58: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=3) Dp[i][j]+=Dp[i-2][j-3]*(j-1)*(j-2)*(i-1)*2; Dp[i][j]%=MOD;
                                                          ^~
tents.cpp:27:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (j>=4) Dp[i][j]+=Dp[i-2][j-4]*((j-1)*(j-2)/2*(i-1)*(j-3)%MOD); Dp[i][j]%=MOD;
    ^~
tents.cpp:27:70: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (j>=4) Dp[i][j]+=Dp[i-2][j-4]*((j-1)*(j-2)/2*(i-1)*(j-3)%MOD); Dp[i][j]%=MOD;
                                                                      ^~
tents.cpp:28:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
    if (i>=3&&j>=3) Dp[i][j]+=Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)/4%MOD); Dp[i][j]%=MOD;
    ^~
tents.cpp:28:76: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
    if (i>=3&&j>=3) Dp[i][j]+=Dp[i-3][j-3]*((i-1)*(j-1)*(i-2)*(j-2)/4%MOD); Dp[i][j]%=MOD;
                                                                            ^~
tents.cpp:31:25: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long int' [-Wformat=]
  printf("%d", Dp[H][W]-1);
               ~~~~~~~~~~^
tents.cpp:7:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &H, &W);
  ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 508 KB Output is correct
3 Correct 3 ms 684 KB Output is correct
4 Correct 2 ms 1268 KB Output is correct
5 Correct 4 ms 1268 KB Output is correct
6 Correct 4 ms 1608 KB Output is correct
7 Correct 3 ms 1608 KB Output is correct
8 Correct 4 ms 1608 KB Output is correct
9 Correct 2 ms 1608 KB Output is correct
10 Correct 6 ms 2128 KB Output is correct
11 Correct 2 ms 2128 KB Output is correct
12 Incorrect 9 ms 2464 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 508 KB Output is correct
3 Correct 3 ms 684 KB Output is correct
4 Correct 2 ms 1268 KB Output is correct
5 Correct 4 ms 1268 KB Output is correct
6 Correct 4 ms 1608 KB Output is correct
7 Correct 3 ms 1608 KB Output is correct
8 Correct 4 ms 1608 KB Output is correct
9 Correct 2 ms 1608 KB Output is correct
10 Correct 6 ms 2128 KB Output is correct
11 Correct 2 ms 2128 KB Output is correct
12 Incorrect 9 ms 2464 KB Output isn't correct