Cho dãy số nguyên {A} có n phần tử, hãy tìm vị trí vt nhỏ nhất sao cho tổng các giá trị bên trái vt Lsum (không nhận giá trị tại vt) bằng tổng các giá trị bên phải vt Rsum (không nhận giá trị tại vt) Nếu không tồn tại, hãy xuất ra 1 INP Dòng đầu tiên chứa số nguyên n ( 1≤ n ≤104) Dòng tiếp theo là dãy {A} ( −103≤ �� ≤103) OUT Số nguyên duy nhất vt INP OUT 6 1 1 0 1 1 1 1 Rsum = A2.
Lưu ý: Tài liệu mang tính chất tham khảo, có trường hợp chưa đắn điều chỉnh, xin cảm ơn Bài tập: Cho dãy số nguyên {A} có n phần tử, tìm vị trí vt nhỏ cho tổng giá trị bên trái vt Lsum (không nhận giá trị vt) tổng giá trị bên phải vt Rsum (không nhận giá trị vt) Nếu không tồn tại, xuất -1 .INP: -Dòng chứa số nguyên n ( 1≤ n ≤104 ) -Dòng dãy {A} ( −103 ≤ �� ≤103 ) OUT: Số nguyên vt -1 -1 1 -1 INP 13532 164656 OUT Rsum = A[2]+A[3]+A[4]+A[5]+A[6]=0 Lsum = -1 (Không tồn vt) Lsum = A[1]+A[2]+A[3]=11 Rsum = A[5]+A[6]=11 Hướng dẫn tham khảo: Gọi Asum tổng giá trị dãy {A} A[1] + A[2] + …A[vt − 1]+A[vt] + A[vt + 1] + … A[n − 1] + A[n] = Asum Lsum → Rsum = Asum – Lsum – A[vt] Để Rsum = Lsum → Rsum Asum - Lsum - A[vt] = Lsum , từ tìm vt Đầu tiên tính tổng dãy Asum Xét vị trí i, Asum - Lsum - A[i] = Lsum i vt, ngược lại ta cộng a[i] vào Lsum (Lsum = Lsum + a[i]) xét tiếp i + (a[i] + Lsum i bên trái i+1 nên a[i] thuộc Lsum i+1) Code C++: int Index(vector a, int n) { int Lsum = 0, Asum = 0; for (int i = 0; i < n; i ++) Asum = Asum + a[i]; } // Tổng dãy for (int i = 0; i < n; i ++) { // Tìm vt if (Lsum == Asum - Lsum - a[i]) return i + 1; Lsum = Lsum + a[i]; } return -1; Code Pascal: function Index():longint; var i, j, Asum, Lsum, vt : longint; begin Asum := 0; Lsum := 0; vt:= -1; for i:= to n //tổng dãy Asum := Asum + a[i]; for i: = to n // tìm vt begin if Lsum = Asum - Lsum - a[i] then begin vt:=i; break; end; Lsum := Lsum + a[i]; end; Index := vt; end; ... Index():longint; var i, j, Asum, Lsum, vt : longint; begin Asum := 0; Lsum := 0; vt:= -1; for i:= to n / /tổng dãy Asum := Asum + a[i]; for i: = to n // tìm vt begin if Lsum = Asum - Lsum - a[i] then begin