BOI 2011 - Đạo văn

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: 1100 (p) Thời gian: 3.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Các thí sinh của Cuộc thi Lập trình Thế giới đã nộp \(N\) tệp lời giải \(f_1,\ldots,f_N\) lên hệ thống chấm. Trước khi công nhận kết quả cuối cùng, ban giám khảo muốn loại trừ mọi khả năng đạo văn. Họ có một chương trình nhận hai tệp và so sánh để xác định liệu chúng có quá giống nhau hay không.

Tuy nhiên, số tệp khá lớn nên so sánh mọi cặp sẽ mất quá nhiều thời gian. Mặt khác, có thể nhanh chóng bỏ qua nhiều cặp vì kích thước của hai tệp chênh lệch quá nhiều.

Cụ thể, ban giám khảo quyết định bỏ qua mọi cặp mà kích thước tệp nhỏ hơn chưa đạt 90% kích thước tệp lớn hơn. Do đó, chỉ cần kiểm tra những cặp tệp khác nhau \((f_i,f_j)\) thỏa mãn

\[ i\ne j,\qquad \operatorname{size}(f_i)\le\operatorname{size}(f_j),\qquad \operatorname{size}(f_i)\ge0{,}9\cdot\operatorname{size}(f_j). \]

Mỗi cặp tệp chỉ được tính một lần. Hãy viết chương trình tính số cặp phải kiểm tra.

Dữ liệu vào

Dòng đầu tiên chứa số nguyên \(N\), là số tệp lời giải đã nộp.

Dòng thứ hai chứa \(N\) số nguyên \(\operatorname{size}(f_1),\ldots,\operatorname{size}(f_N)\), lần lượt là kích thước của từng tệp.

Dữ liệu ra

In một số nguyên duy nhất: số cặp tệp cần kiểm tra.

Ràng buộc

  • \(1 \le N \le 100\,000\).
  • \(1 \le \operatorname{size}(f_i) \le 100\,000\,000\).

Phân nhóm

  • Trong các bộ dữ liệu có tổng cộng 50 điểm, \(1 \le N \le 2\,000\).
  • 50 điểm còn lại không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
2
2 1
Output
0

Ví dụ 2

Input
5
1 1 1 1 1
Output
10
Giải thích

Mỗi tệp đều phải được so sánh với mọi tệp khác, nhưng mỗi cặp chỉ tính một lần.

Tệp

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: