fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. //defines
  5. #define openin freopen("input.txt","r",stdin)
  6. #define openout freopen("output.txt","w",stdout)
  7. #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
  8. #define ll long long
  9. #define int long long
  10. #define mod 1000000007
  11. #define rep(i,x,y) for (__typeof(x) i=x;(x<=y?i<=y:i>=y);i=(x<=y?i+1:i-1))
  12. #define all(c) (c).begin(),(c).end()
  13. #define ff first
  14. #define ss second
  15. #define pb push_back
  16. #define mp make_pair
  17. int n ;
  18. int arr[1000006] ;
  19. int p[1000006] ;
  20. int32_t main()
  21. {
  22. fast;
  23. cin >> n ;
  24. rep(i,1,n) cin >> arr[i] ;
  25. p[0] = 1ll ;
  26. rep(i,1,1000000)
  27. {
  28. p[i] = p[i-1]*2ll ;
  29. p[i] %= mod ;
  30. }
  31. int ans = 0 ;
  32. for(int k = 1 ; k <= n/2 ; k++ )
  33. {
  34. int temp = p[n] + p[n-1] - p[n-k] - p[k-1] ;
  35. temp %= mod ;
  36. int temp2 = arr[k] + arr[n+1-k] ;
  37. temp2 %= mod ;
  38. temp = (temp * temp2) ;
  39. temp %= mod ;
  40. ans += temp ;
  41. ans %= mod ;
  42. }
  43. if(n%2)
  44. {
  45. int i = (n+1)/2 ;
  46. int temp = p[n] + p[n-1] - p[n-i] - p[i-1] ;
  47. temp %= mod ;
  48. temp *= arr[i] ;
  49. temp %= mod ;
  50. ans += temp ;
  51. ans %= mod ;
  52. }
  53. cout << ans << '\n' ;
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0.01s 19088KB
stdin
3
1 3 6
stdout
73