Cầu cảng

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Một cảng biển có \(m\) cầu cảng để tiếp nhận các tàu cập bến. Tại một thời điểm, mỗi cầu cảng chỉ có thể tiếp nhận không quá 1 tàu. Ban đầu các cầu cảng đều trống và có \(n\) tàu xin đăng ký cập bến, tàu thứ \(i\) muốn đậu ở cảng từ ngay sau thời điểm \(s_i\) tới hết thời điểm \(f_i\). Có thể coi thời gian tàu thứ \(i\) muốn đậu ở cảng là một khoảng \((s_i, f_i]\) trên trục thời gian. Tàu đã vào cầu cảng nào thì sẽ đậu ở đó trong suốt thời gian nằm cảng.

Yêu cầu: Hãy cho biết với \(m\) cầu cảng đã cho, có thể tiếp nhận tối đa bao nhiêu tàu và chỉ ra lịch trình tiếp nhận tại mỗi cầu cảng.

Input

  • Dòng 1: Chứa hai số nguyên dương \(m, n \leq 10^5\).
  • \(n\) dòng tiếp theo, dòng thứ \(i\) chứa hai số nguyên \(s_i\), \(f_i\) (\(0 \leq s_i < f_i \leq 10^5\)).

Các số trên một dòng của Input/Output files được/phải ghi cách nhau ít nhất một dấu cách.

Output

  • Dòng 1: Ghi số lượng tàu được tiếp nhận phục vụ.
  • Dòng 2: Ghi \(n\) số nguyên, số thứ \(i\) là số hiệu cầu cảng sẽ tiếp nhận tàu thứ \(i\) trong trường hợp tàu thứ \(i\) được tiếp nhận, còn nếu tàu thứ \(i\) không được tiếp nhận thì số thứ \(i\) là \(0\).

Example

Test 1

Input
2 5
0 3
3 5
0 2
2 5
1 4
Output
4
1 1 2 2 0

Scoring

  • Subtask 1: \(m, n \leq 400\).
  • Subtask 2: \(m, n \leq 10^4\).
  • Subtask 3: \(m, n \leq 10^5\).

Nguồn: LHM

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.