Problem p02572 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <cmath>
#include <deque>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

#define FOR(i, start, end) for (ll i = (start); i < (end); i++)
#define rep(i, n) FOR(i, 0, n)
#define all(x) (x).begin(), (x).end()
#define ctoi(c) c - '0'
#define tos(s) to_string(s)

typedef long long ll;

int main() {
  ll n;
  cin >> n;
  ll a[n], b[n];
  rep(i, n) { cin >> a[i]; }

  rep(i, n - 1) {
    if (i == 0) {
      b[i] = a[n - 1];
    } else {
      b[i] = (b[i - 1] + a[n - i - 1]) % ll(powl(10, 9) + 7);
    }
  }

  ll sum = 0;
  ll tmp;
  rep(i, n - 1) {
    tmp = (a[i] * b[n - i - 2]) % ll(powl(10, 9) + 7);
    sum = (sum + tmp) % ll(powl(10, 9) + 7);
  }
  cout << sum << endl;
  return 0;
}

/*
ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC
                                   ******,  .,, .,, ,,,    ****.**
                                   ** . .,,,,,,,,,,,,,,,,,,,,,. .,*
                                   **,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                    ****      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
              ***************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
         ********************,,,,,,,,,,,,,,@@@,,,,,,,,,,,/@@@,,,,,,,,,,,,,,,
        ******************,,,,,,,,,,,,,,,,,,(,,.         ,,,,,,,,,,,,,,,,,,,
       ********************,,,,,,,,,,,*,,,,,.     %&&&     .,,,,*,,,,,,,,,,,,.
       ***,,,,,,,,,,,,,,*,,,,,,,,,,,,,,,,,,,,               ,,,,,,,,,,,,,,,,,
       ,,,,,,,,,,,,,,,,,,,**,,,,,,,,,,.......      ##(     ........,,,,,,,,,,.
     .,,,,,,,,,,,,,,,,,,**,,,,,,,,,,..............    ..............,,,,,,,,
    .,,,,,,,,,,,,,,,,,,,**,,,,,,,,,.................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,***,,,,,,,....................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,**,,,,,,,,.....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,**,,,,,,,,....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,.,,,,,
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,
     ,,,,,,,,,,,,,,,,,,,,,,,,,,,,....................................,,,
      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,
       ..,,,,,,,,,,,,,,,,,,,,,,,,,,.................................,
       .........**.....       ,,,,,..............................
        .......*......                  ****,**,       ,..****
        .......*,....                   .......        ......
          .......*....                   .....          .....
                                         ......          .....
*/

Error: TLE

Fixed submission:

#include <cmath>
#include <deque>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

#define FOR(i, start, end) for (ll i = (start); i < (end); i++)
#define rep(i, n) FOR(i, 0, n)
#define all(x) (x).begin(), (x).end()
#define ctoi(c) c - '0'
#define tos(s) to_string(s)

typedef long long ll;

int main() {
  ll n;
  cin >> n;
  ll a[n];
  rep(i, n) { cin >> a[i]; }

  ll sum = 0;
  ll tmp;
  rep(i, n - 1) {
    FOR(j, i + 1, n) {
      tmp = (a[i] * a[j]) % ll(powl(10, 9) + 7);
      sum = (sum + tmp) % ll(powl(10, 9) + 7);
    }
  }
  cout << sum << endl;
  return 0;
}

/*
ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC
                                   ******,  .,, .,, ,,,    ****.**
                                   ** . .,,,,,,,,,,,,,,,,,,,,,. .,*
                                   **,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                                .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
                    ****      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
              ***************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
         ********************,,,,,,,,,,,,,,@@@,,,,,,,,,,,/@@@,,,,,,,,,,,,,,,
        ******************,,,,,,,,,,,,,,,,,,(,,.         ,,,,,,,,,,,,,,,,,,,
       ********************,,,,,,,,,,,*,,,,,.     %&&&     .,,,,*,,,,,,,,,,,,.
       ***,,,,,,,,,,,,,,*,,,,,,,,,,,,,,,,,,,,               ,,,,,,,,,,,,,,,,,
       ,,,,,,,,,,,,,,,,,,,**,,,,,,,,,,.......      ##(     ........,,,,,,,,,,.
     .,,,,,,,,,,,,,,,,,,**,,,,,,,,,,..............    ..............,,,,,,,,
    .,,,,,,,,,,,,,,,,,,,**,,,,,,,,,.................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,***,,,,,,,....................................,,,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,**,,,,,,,,.....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,**,,,,,,,,....................................,,,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,,,
   ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,.,,,,,
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....................................,,,
     ,,,,,,,,,,,,,,,,,,,,,,,,,,,,....................................,,,
      ,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................................,
       ..,,,,,,,,,,,,,,,,,,,,,,,,,,.................................,
       .........**.....       ,,,,,..............................
        .......*......                  ****,**,       ,..****
        .......*,....                   .......        ......
          .......*....                   .....          .....
                                         ......          .....
*/