USACO 2013 - Gangs of Instanbull/Cowstantinople

Xem PDF



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, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cuộc sống ở trang trại thật khắc nghiệt, và khi cuộc sống khắc nghiệt thì ta phải trở nên cứng rắn. Những con bò đã lập thành các băng nhóm (được đánh số thuận tiện từ \(1\) đến \(M\)). Các băng nhóm đã chung sống hòa bình trong một thời gian, nhưng giờ mọi chuyện thực sự đang vượt khỏi tầm kiểm soát!

Những con bò đang tranh giành quyền kiểm soát một cánh đồng cỏ rộng lớn. Cuộc xung đột này diễn ra trong một chuỗi các phút. Mỗi phút, một con bò đi vào cánh đồng. Nếu cánh đồng đang trống, băng nhóm của con bò mới được xem là giành quyền kiểm soát cánh đồng. Nếu cánh đồng đã do băng nhóm của con bò mới kiểm soát thì nó chỉ việc bắt đầu gặm cỏ. Nếu không, một con bò đang gặm cỏ thuộc băng nhóm kiểm soát sẽ đối đầu với con bò mới.

Những cuộc đối đầu giữa hai con bò bắt đầu bằng một hồi tranh cãi và chắc chắn kết thúc khi cả hai nhận ra rằng chúng giống nhau nhiều hơn là khác nhau biết bao. Nhận ra sai lầm của mình, hai con bò rời khỏi băng nhóm và cánh đồng, rồi đến quán rượu của FJ uống một ly sữa đậu nành lạnh. Nếu sau cuộc đối đầu này cánh đồng không còn con bò nào thì không băng nhóm nào kiểm soát cánh đồng.

Bessie hiểu những cuộc đối đầu này sẽ diễn ra như thế nào. Cô biết số lượng bò trong mỗi băng nhóm. Bessie rất muốn băng nhóm của mình kiểm soát cánh đồng sau khi cuộc xung đột kết thúc và tất cả bò hoặc ở trên cánh đồng hoặc ở quán rượu của FJ. Hãy giúp Bessie xác định liệu cuối cùng băng nhóm của cô, được đánh số \(1\), có thể kiểm soát cánh đồng hay không.

Nếu có thể, Bessie muốn biết số lượng lớn nhất bò thuộc băng nhóm của cô có thể còn ở trên cánh đồng khi kết thúc. Hãy in số này và thứ tự từ điển nhỏ nhất của các con bò để đạt được số bò đó từ băng nhóm của Bessie khi kết thúc. Một thứ tự \(X\) được xem là đứng trước \(Y\) theo thứ tự từ điển nếu tồn tại một \(k\) sao cho \(X[k] < Y[k]\)\(X[i] = Y[i]\) với mọi \(i < k\).

Dữ liệu vào

  • Dòng đầu tiên chứa \(N\) (\(1 \le N \le 100\)) và \(M\) (\(1 \le M \le N\)), cách nhau bởi dấu cách. Tổng số bò trong tất cả các băng nhóm là \(N\). Tổng số băng nhóm là \(M\).
  • \(M\) dòng tiếp theo: dòng thứ \(1+i\) cho biết số thành viên trong băng nhóm \(i\). Mỗi băng nhóm có ít nhất \(1\) thành viên.

Dữ liệu ra

  • Dòng đầu tiên in YES nếu băng nhóm của Bessie có thể kiểm soát cánh đồng sau cuộc xung đột. Nếu không, in NO trên một dòng.
  • Nếu băng nhóm của Bessie có thể kiểm soát cánh đồng sau cuộc xung đột, dòng thứ hai in số lượng lớn nhất bò có thể còn ở trên cánh đồng.
  • Nếu có thể, trong \(N\) dòng tiếp theo, dòng thứ \(i+2\) in chỉ số băng nhóm của con bò xuất hiện ở phút thứ \(i\) trong thứ tự từ điển nhỏ nhất mà vẫn để lại số lượng bò lớn nhất trên cánh đồng sau cuộc xung đột.

Ví dụ

Ví dụ 1

Input
5 3
2
1
2
Output
YES
1
1
3
2
3
1
Giải thích

\(5\) con bò và \(3\) băng nhóm. Băng nhóm của Bessie (băng nhóm \(1\)) có \(2\) thành viên, băng nhóm \(2\)\(1\) thành viên và băng nhóm \(3\)\(2\) thành viên.

Chỉ một con bò thuộc băng nhóm của Bessie có thể còn lại trên cánh đồng.

Nguồn

USACO 2012 December Contest, Gold — Problem 1: Gangs of Instanbull/Cowstantinople

Tác giả đề: Mark Gordon, 2012.

Bình luận

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

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

Kỳ thi: