Rải sỏi

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: 1400 Thời gian: 1.0s Bộ nhớ: 1G Input: ARRANGE.INP Output: ARRANGE.OUT

Người ta vẽ ra \(n\) ô trống đánh số từ \(1\) tới \(n\) sau đó đặt đúng \(m\) viên sỏi vào trong ô trống thứ \(k\). Bạn được thực hiện thao tác: lấy một viên sỏi ở ô thứ \(k\) và chuyển nó sang một ô khác bất kỳ.
Yêu cầu: Hãy dùng ít thao tác nhất để rải các viên sỏi vào các ô, sao cho khi bạn kết thúc các thao tác, số sỏi trong hai ô liên tiếp bất kỳ chênh lệch nhau không quá \(1\). Cho biết số thao tác cần sử dụng

Input

Vào từ file văn bản ARRANGE.INP.

  • Dòng 1 chứa số nguyên dương \(T \leq 10^5\) là số test.
  • \(T\) dòng tiếp theo, mỗi dòng chứa một test là ba số nguyên dương \(n, m, k\) cách nhau bởi dấu cách \((n ≤ 10^9; 𝑚 \leq 10^9; 1 \leq 𝑘 \leq 𝑛)\).

Output

  • Ghi ra file văn bản ARRANGE.OUT.
  • Ứng với mỗi test, ghi ra số thao tác cần sử dụng theo phương án tìm được

Example

Test 1

Input
2
4 8 3
5 6 5
Output
5
3
Note

Dãy kết quả:
0 0 8 0 \(\to\) 1 2 3 2
0 0 0 0 6 \(\to\) 0 0 1 2 3

Bình luận

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

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