Pagini recente » Cod sursa (job #2364040) | Cod sursa (job #1855245) | Cod sursa (job #104832) | Rating Petrescu Robert Mihai (PetrescuRobert) | Cod sursa (job #3242352)
//package scmax;
import java.io.*;
import java.util.*;
public class Main {
static final String INPUT_FILE = "scmax.in";
static final String OUTPUT_FILE = "scmax.out";
public static class TokenizedReader {
private final BufferedReader reader;
private StringTokenizer tokenizer;
TokenizedReader(String filePath) throws FileNotFoundException {
reader = new BufferedReader(new FileReader(filePath));
}
private String nextToken() {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
}
private int nextInt() {
return Integer.parseInt(nextToken());
}
public void close() throws IOException {
reader.close();
}
}
public static void main(String[] args) throws IOException {
TokenizedReader reader = new TokenizedReader(INPUT_FILE);
PrintWriter writer = new PrintWriter(OUTPUT_FILE);
solve(reader, writer);
reader.close();
writer.flush();
writer.close();
}
public static void solve(TokenizedReader reader,
PrintWriter writer) {
int n = reader.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; ++i) {
nums[i] = reader.nextInt();
}
TreeSet<Integer> lis = new TreeSet<>();
lis.add(nums[0]);
for (int i = 1; i < nums.length; ++i) {
Integer ceiling = lis.ceiling(nums[i]);
if (ceiling == null) {
lis.add(nums[i]);
} else {
lis.remove(ceiling);
lis.add(nums[i]);
}
}
writer.println(lis.size());
}
}