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 ...
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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. |