P146PROG - ROUND 6G - Cuộc thi ăn socola

Người Gửi: Dương Lee

  • Problem:

Sau ngày 14/3, lại dư socola nên Tí và Tèo đem ra ăn thi. Họ đặt n thanh socola lên trên bàn, Tí sẽ bắt đầu các thanh socola từng cái một từ trái sang phải, còn Tèo thì từ phải sang trái.  
Biết rằng Tí và Tèo ăn với tốc độ là như nhau, nhưng mỗi thanh có chiều dài khác nhau, vì vậy thời gian để ăn hết chúng cũng khác nhau. Ngay khi ăn hết 1 thanh, người chơi sẽ ngay lập tức chuyển sang thanh tiếp theo. Người chơi không được phép ăn 2 thanh cùng một lúc, và không được bỏ dở 1 thanh để ăn thanh khác. Nếu 2 người cùng bắt đầu ăn 1 thanh sô cô la, Tèo sẽ nhường cho Tí.  
Cho biết trước thời gian cần thiết để ăn hết các thanh socola. Các bạn hãy tính xem khi kết thúc, Tí và Tèo, mỗi người đã ăn tất cả bao nhiêu thanh?


Input

Dòng đầu tiên chứa số nguyên n (1 ≤ n ≤ 10^5) - số thanh socola có trên bàn.  
Dòng thứ 2 chứa 1 dãy t_1, t_2, ..., t_n(1 ≤ t_i ≤ 1000), với t_i (tính theo giây) là thời gian cần thiết để ăn thanh thứ i, theo thứ tự từ trái sang phải.
Output
In ra 2 giá trị là số thanh socola Tí và Tèo đã ăn.
Example:
Input
5
2 9 8 2 7
Output:
2 3

  • Solution:

- Cho hai biến chạy hai đầu i++ và j-- tương ứng với Tí và Tèo đến từng giá trị time; - Các trường hợp ăn sẽ thế này: + time ăn == nhau: chạy tiếp đến giá trị tiếp theo (i++, j--). + time ăn Tí < Tèo: time_Tí = time_Tèo - time_Tí và Tèo chạy tiếp đến giá trị tiếp (i++). + time ăn Tí > Tèo: time_Tèo = time_Tí - time_Tèo và Tí chạy tiếp đến giá trị tiếp (j--). + ĐK dừng khi i==j: trước khi dừng kiểm tra thêm nếu Tí và Tèo mà cùng ăn miếng đó thì Tí sẽ ăn.

  • Code:

C++:



JAVA:


Share this

Related Posts

Previous
Next Post »