File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.* ;
3+ import java.util.StringTokenizer ;
4+
5+ public class Main {
6+
7+ private static final BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
8+ private static final BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System . out));
9+ private static StringTokenizer st;
10+
11+ private static int N ;
12+ private static int [] nums;
13+ private static long [][] dp;
14+
15+ public static void main (String [] args ) throws IOException {
16+ init();
17+ sol();
18+ }
19+
20+ private static void init () throws IOException {
21+ N = Integer . parseInt(br. readLine());
22+
23+ nums = new int [N ];
24+ st = new StringTokenizer (br. readLine());
25+ for (int i = 0 ; i < N ; i++ ) {
26+ nums[i] = Integer . parseInt(st. nextToken());
27+ }
28+ dp = new long [N ][21 ];
29+ dp[0 ][nums[0 ]] = 1 ;
30+ }
31+
32+ private static void sol () throws IOException {
33+ for (int i = 1 ; i < N - 1 ; i++ ) {
34+ for (int prev = 0 ; prev <= 20 ; prev++ ) {
35+ if (dp[i - 1 ][prev] == 0 ) continue ;
36+
37+ int sum = prev + nums[i];
38+ int gap = prev - nums[i];
39+
40+ if (sum <= 20 ) {
41+ dp[i][sum] += dp[i - 1 ][prev];
42+ }
43+ if (gap >= 0 ) {
44+ dp[i][gap] += dp[i - 1 ][prev];
45+ }
46+ }
47+ }
48+ bw. write(dp[N - 2 ][nums[N - 1 ]] + " " );
49+ bw. flush();
50+ bw. close();
51+ br. close();
52+ }
53+
54+ }
55+ ```
You can’t perform that action at this time.
0 commit comments