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.* ;
4+
5+ public class Main {
6+
7+ public static void main (String [] args ) throws Exception {
8+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
9+ StringTokenizer st;
10+
11+ int n = Integer . parseInt(br. readLine());
12+
13+ int [] arr = new int [n];
14+ int [] dp = new int [n];
15+ int [] prev = new int [n];
16+ Arrays . fill(dp, 1 );
17+ Arrays . fill(prev, - 1 );
18+
19+ st = new StringTokenizer (br. readLine());
20+ for (int i = 0 ; i < n; i++ ) {
21+ arr[i] = Integer . parseInt(st. nextToken());
22+ }
23+
24+ for (int i = 0 ; i < n; i++ ) {
25+ for (int j = 0 ; j < i; j++ ) {
26+ if (arr[i] > arr[j] && dp[i] < dp[j] + 1 ) {
27+ dp[i] = dp[j] + 1 ;
28+ prev[i] = j;
29+ }
30+ }
31+ }
32+
33+ int max = 0 , idx = 0 ;
34+ for (int i = 0 ; i < n; i++ ) {
35+ if (dp[i] > max) {
36+ max = dp[i];
37+ idx = i;
38+ }
39+ }
40+
41+ Stack<Integer > stack = new Stack<> ();
42+ while (idx != - 1 ) {
43+ stack. push(arr[idx]);
44+ idx = prev[idx];
45+ }
46+
47+ System . out. println(max);
48+ while (! stack. isEmpty()) {
49+ System . out. print(stack. pop() + " " );
50+ }
51+
52+ }
53+ }
54+
55+ ```
You can’t perform that action at this time.
0 commit comments