Tìm vị trí i (nếu có) chia dãy số thành 2 phần có tổng bằng nhau

12
Lập trình C++

Bài toán: Tìm các vị trí I (nếu có) chia dãy số thành 2 phần có tổng bằng nhau. Nếu không có thì ghi ra -1 

Ví dụ: n = 6; 1 3 4 2 7 3 i = 4 (giải thích: 1+3+4+2=7+3) 

Code tham khảo: 

#include <iostream>
using namespace std;
int main() {
    int a[100], s[100], n, i, p;
    freopen("BEAUTIFULL.INP","r",stdin);
    freopen("BEAUTIFULL.OUT","w",stdout);
    cin >> n;
    for (i=0; i<n; i++) cin >> a[i];
    s[0] = a[0];
    for (i=1; i<n; i++) s[i] = s[i-1] + a[i];
    p = 0;
    for (i=0; i < n; i++) {
        if (s[i] == s[n-1] / 2) {
            cout << i+1 << " ";
            p = 1;
        }
    }
    if (p == 0) cout << -1;
    return 0;
}