E. Intercity Travelling | Educational Codeforces #47

f:id:parukii:20180716161240j:plain

int n;
cin >> n;
vector<mint> pw(n + 1), a(n + 1);
pw[0] = 1;
rep(i, n) {
    pw[i + 1] = pw[i] * 2;
    int x; cin >> x;
    a[i + 1] = x;
}

mint re, b;
rep(i, n) {
    b = b * 2 + a[i];
    re += (b + a[i + 1])*pw[n - 1 - i];
}
cout << re << endl;