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