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

#include <algorithm>
#include <iostream>
#include <set>
#include <string>
#include <vector>
#define faster                                                                 \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define show(v)                                                                \\
  for (int i : v)                                                              \\
    cout << i << " ";                                                          \\
  cout << endl;
#define sall(v) sort(v.begin(), v.end());

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int inf = 1e9;
int mod = 1e9 + 7;
const int MAXN = 1000005;
int a[MAXN];

// vector<int> g[MAXN];
// vector<bool> was;
// vector<int> d, a;
// int n, m, k, c;
//
// void dfs(int v) {
//     was[v] = true;
//     d[v] = c;
//     for(int to : g[v]){
//         if(!was[to]){
//             dfs(to);
//         }
//     }
// }
//
//
// void solve() {
//     cin >> n >> m >> k;
//     c = 0;
//     d.assign(n, 0);
//     a.assign(k, 0);
//     was.assign(n, false);
//     for(int i = 0;i < k;i++){
//         cin >> a[i];
//         a[i]--;
//     }
//     for(int i = 0;i < n;i++){
//         int x, y;
//         cin >> x >> y;
//         g[x].pb(y);
//         g[y].pb(y);
//     }
//     for(int i = 0;i < n;i++){
//         if(!was[i]){
//             dfs(i);
//             c++;
//         }
//     }
//
// }

int main() {
  faster for (int i = 1; i < MAXN; i++) {
    for (int j = 1; j < MAXN; j++) {
      if (i * j >= MAXN)
        break;
      a[i * j]++;
    }
  }
  int n;
  cin >> n;
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    int s = n - i;
    cnt += a[s];
  }
  cout << cnt << endl;
  return 0;
}


Error: TLE

Fixed submission:

#include <algorithm>
#include <iostream>
#include <set>
#include <string>
#include <vector>
#define faster                                                                 \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define show(v)                                                                \\
  for (int i : v)                                                              \\
    cout << i << " ";                                                          \\
  cout << endl;
#define sall(v) sort(v.begin(), v.end());

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int inf = 1e9;
int mod = 1e9 + 7;
const int MAXN = 100005;

// vector<int> g[MAXN];
// vector<bool> was;
// vector<int> d, a;
// int n, m, k, c;
//
// void dfs(int v) {
//     was[v] = true;
//     d[v] = c;
//     for(int to : g[v]){
//         if(!was[to]){
//             dfs(to);
//         }
//     }
// }
//
//
// void solve() {
//     cin >> n >> m >> k;
//     c = 0;
//     d.assign(n, 0);
//     a.assign(k, 0);
//     was.assign(n, false);
//     for(int i = 0;i < k;i++){
//         cin >> a[i];
//         a[i]--;
//     }
//     for(int i = 0;i < n;i++){
//         int x, y;
//         cin >> x >> y;
//         g[x].pb(y);
//         g[y].pb(y);
//     }
//     for(int i = 0;i < n;i++){
//         if(!was[i]){
//             dfs(i);
//             c++;
//         }
//     }
//
// }

int main() {
  faster int n;
  cin >> n;
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    int s = n - i;
    for (int j = 1; j * j <= s; j++) {
      if (s % j == 0) {
        if (s / j == j)
          cnt += 1;
        else
          cnt += 2;
      }
    }
  }
  cout << cnt << endl;
  return 0;
}