Pagini recente » Cod sursa (job #2687851) | Cod sursa (job #471520) | Cod sursa (job #1764331) | Cod sursa (job #1769045) | Cod sursa (job #1431447)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
int n;
int[] v;
Main(int n) {
this.n = n;
v = new int[n];
}
public int[] scmax() {
int[] aux = new int[n];
int j, i, max = 0;
aux[0] = 1;
for (i = 1; i < n; i++) {
aux[i] = 1;
for (j = i - 1; j >= 0; j--) {
if (v[j] < v[i]) {
aux[i] = aux[j] + 1;
if (max < aux[i]) {
max = aux[i];
}
break;
}
}
}
i = n - 1;
j = max - 1;
int[] u = new int[max];
while (aux[i] < max) {
i--;
}
u[j--] = v[i--];
max--;
while (j >= 0) {
if (aux[i] == max) {
if (u[j + 1] > v[i]) {
u[j--] = v[i--];
max--;
}
}
else {
i--;
}
}
return u;
}
public static void main(String[] args) {
FileInputStream input;
FileOutputStream output;
try {
input = new FileInputStream("scmax.in");
output = new FileOutputStream("scmax.out");
Scanner sc = new Scanner(input);
PrintWriter printer = new PrintWriter(output);
int n;
int[] u;
n = sc.nextInt();
Main m = new Main(n);
for (int i = 0; i < m.n; i++) {
m.v[i] = sc.nextInt();
System.out.print(m.v[i] + " ");
}
System.out.println(" ");
u = m.scmax();
for (int i = 0; i < u.length; i++) {
printer.write(String.valueOf(u[i]) + " ");
}
printer.write("\n");
sc.close();
printer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}