P146PROG spoj PTIT – Cuộc thi ăn socola

Nguồn đề bài: http://vn.spoj.com/PTIT/problems/P146PROG/

1. Đề bài P146PROG spoj

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

2. Code tham khảo P146PROG spoj PTIT

const   fi='';
        nmax=100000;
type    data=longint;
var
        f:text;
        A,B:array[0..nmax+1] of data;
        n:data;

procedure docfile;
var     i:data;
begin
        assign(f,fi); reset(f);
        readln(f,n);
        a[0]:=0;
        for i:=1 to n do
                begin
                        read(f,b[i]);
                        a[i]:=a[i-1]+b[i];
                end;
        for i:=n downto 1 do
                B[i]:=b[i+1]+b[i];
        close(f);
end;

procedure xuli;
var     i,min,vtmin:data;
begin
        min:=high(data);
        for i:=1 to n do
                if abs(a[i]-b[i])<min then
                        begin
                                min:=abs(a[i]-b[i]);
                                vtmin:=i;
                        end;
        if a[vtmin]>b[vtmin] then
                writeln(vtmin-1,' ',n-vtmin+1)
        else
                if a[vtmin]<b[vtmin] then
                        writeln(vtmin,' ',n-vtmin)
                else
                        writeln(vtmin,' ',n-vtmin);
end;

begin
        docfile;
        xuli;
end.

2 thoughts on “P146PROG spoj PTIT – Cuộc thi ăn socola

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *