Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- public class C implements Runnable{
- public static void main (String[] args) {new Thread(null, new C(), "_cf", 1 << 28).start();}
- public void run() {
- FastScanner fs = new FastScanner();
- PrintWriter out = new PrintWriter(System.out);
- System.err.println("Go!");
- int n = fs.nextInt();
- Range[] a = new Range[2*n];
- for(int i = 0; i < n; i++) {
- int s = fs.nextInt(), e = fs.nextInt();
- a[i] = new Range(s, e, false);
- a[i + n] = new Range(s, e, true);
- }
- Arrays.sort(a);
- TreeSet<Integer> set = new TreeSet<>();
- for(Range r : a) {
- if(r.end == false) continue;
- Integer hi = set.ceiling(r.s);
- if(hi == null || hi > r.e) {
- set.add(r.e);
- }
- }
- out.println(set.size());
- while(!set.isEmpty()) {
- out.print(set.pollFirst());
- if(set.isEmpty()) out.println();
- else out.print(" ");
- }
- out.close();
- }
- class Range implements Comparable<Range> {
- int s, e, use;
- boolean end;
- Range (int a, int b, boolean f) {
- s = a; e = b;
- if(f) use = e;
- else use = s;
- end = f;
- }
- public int compareTo(Range o) {
- if(use == o.use) {
- return Boolean.compare(end, o.end);
- }
- return Integer.compare(use, o.use);
- }
- }
- void sort (int[] a) {
- int n = a.length;
- for(int i = 0; i < 50; i++) {
- Random r = new Random();
- int x = r.nextInt(n), y = r.nextInt(n);
- int temp = a[x];
- a[x] = a[y];
- a[y] = temp;
- }
- Arrays.sort(a);
- }
- class FastScanner {
- BufferedReader br;
- StringTokenizer st;
- public FastScanner() {
- try {
- br = new BufferedReader(new InputStreamReader(System.in));
- // br = new BufferedReader(new FileReader("testdata.out"));
- st = new StringTokenizer("");
- } catch (Exception e){e.printStackTrace();}
- }
- public String next() {
- if (st.hasMoreTokens()) return st.nextToken();
- try {st = new StringTokenizer(br.readLine());}
- catch (Exception e) {e.printStackTrace();}
- return st.nextToken();
- }
- public int nextInt() {return Integer.parseInt(next());}
- public long nextLong() {return Long.parseLong(next());}
- public double nextDouble() {return Double.parseDouble(next());}
- public String nextLine() {
- String line = "";
- try {line = br.readLine();}
- catch (Exception e) {e.printStackTrace();}
- return line;
- }
- public Integer[] nextIntegerArray(int n) {
- Integer[] a = new Integer[n];
- for(int i = 0; i < n; i++) a[i] = nextInt();
- return a;
- }
- public int[] nextIntArray(int n) {
- int[] a = new int[n];
- for(int i = 0; i < n; i++) a[i] = nextInt();
- return a;
- }
- public char[] nextCharArray() {return nextLine().toCharArray();}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement