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

/// S->----------------------------------------------------|
/// R->--------------</AUTHOR - SRIJAN DE>-----------------|
/// I->--------</https://thesrijande.github.io/>-----------|
/// J->----</JALPAIGURI GOVERNMENT ENGINEERING COLLEGE>----|
/// A->------------</INFORMATION TECHNOLOGY>---------------|
/// N->----------------------------------------------------|
#include <bits/stdc++.h>
using namespace std;
using ll = int64_t;
using ull = unsigned long long;
using ld = long double;
#define int int64_t
#define mem(a, ss) memset(a, ss, sizeof(a))
#define b_s binary_search
#define u_b upper_bound
#define l_b lower_bound
#define nl cout << endl
#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define in insert
#define fi first
#define se second
#define umap unordered_map
#define pqueue priority_queue
#define rr return
#define bits(n) __builtin_popcount(n)
const int N = 1e6 + 7;
const int MOD = (int)1e9 + 7;
const int MOD1 = (int)1e9 + 9;
const int MOD2 = 998244353;
const ld pi = atan2(0, -1);
const ld eps = 1e-9;
int tests = 1;
int test = 1;
template <class x, class y> x max(x a, y b) { return (a > b) ? a : b; }
template <class x, class y> x min(x a, y b) { return (a < b) ? a : b; }
template <class x, class y> x log(x n, y r) {
  return (n > r - 1) ? 1 + log(n / r, r) : 0;
}

bool isprime(int n);
bool ispalin(int num);
bool isleapyear(int year);
int __lcm(int a, int b);
int power(int x, int y);
int digitsum(int n);
int fact(int n);
int npr(int n, int r);
int ncr(int n, int r);
int evensum(int n);
int oddsum(int n);
int find_set(int v);
void make_set(int v);
void union_sets(int a, int b);
void sorts(string &str);

///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'
vector<int> adj[N], subset;
int vis[N] = {0};
///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.

int32_t main() {
  auto start = clock();
  ios_base::sync_with_stdio(0);
  cout.tie(0);
  cin.tie(0);
#ifndef ONLINE_JUDGE
  {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    freopen("error.txt", "w", stderr);
  }
#endif

  //  cout<<fixed;
  //  cout<<scientific;
  //  cout<<fixed<<setprecision(12);
  // cin >> tests;
  for (test = 1; test <= tests; test++) {
    // cout<<"Case #"<<test<<": ";
    ///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.

    int n;
    cin >> n;
    int a[n + 1], sum = 0;
    map<int, int> mp;
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      mp[a[i]]++;
      sum += a[i];
    }

    int q;
    cin >> q;
    while (q--) {
      int x, y;
      cin >> x >> y;
      sum += (y - x) * mp[x];
      mp[y] += mp[x];

      mp[x] = 0;
      cout << sum << endl;
    }

    ///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.
  }
  cerr << endl
       << endl
       << endl
       << "Time : " << double(clock() - start) / CLOCKS_PER_SEC << endl;
  return 0;
}

bool isprime(int n) {
  for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0)
      return false;
  }
  return true;
}

bool ispalin(int num) {
  bool flag = false;
  int digit, rev = 0, n = num;
  do {
    digit = num % 10;
    rev = (rev * 10) + digit;
    num = num / 10;
  } while (num != 0);
  if (rev == n)
    flag = true;
  return flag;
}

bool isleapyear(int year) {
  if (year % 400 == 0)
    return true;

  if (year % 100 == 0)
    return false;

  if (year % 4 == 0)
    return true;
  return false;
}

int __lcm(int a, int b) { return (a * b) / __gcd(a, b); }

int power(int x, int y) {
  int temp;
  if (y == 0)
    return 1;
  temp = pow(x, y / 2);
  if (y % 2 == 0)
    return temp * temp;
  else
    return x * temp * temp;
}

int digitsum(int n) {
  int c = 0;
  while (n > 0) {
    c++;
    n /= 10;
  }
  return c;
}

int fact(int n) {
  if (n <= 1)
    return 1;
  return n * fact(n - 1);
}

int ncr(int n, int r) {
  long long p = 1, k = 1;
  if (n - r < r)
    r = n - r;

  if (r != 0) {
    while (r) {
      p *= n;
      k *= r;
      int m = __gcd(p, k);
      p /= m;
      k /= m;
      n--;
      r--;
    }
  } else
    p = 1;
  return p;
}

int npr(int n, int r) { return fact(n) / fact(n - r); }

int evensum(int n) { return (n / 2 * (n / 2 + 1)); }

int oddsum(int n) { return (((n + 1) / 2) * ((n + 1) / 2)); }

void sorts(string &str) { sort(str.begin(), str.end()); }

Error: TLE

Fixed submission:

/// S->----------------------------------------------------|
/// R->--------------</AUTHOR - SRIJAN DE>-----------------|
/// I->--------</https://thesrijande.github.io/>-----------|
/// J->----</JALPAIGURI GOVERNMENT ENGINEERING COLLEGE>----|
/// A->------------</INFORMATION TECHNOLOGY>---------------|
/// N->----------------------------------------------------|
#include <bits/stdc++.h>
using namespace std;
using ll = int64_t;
using ull = unsigned long long;
using ld = long double;
#define int int64_t
#define mem(a, ss) memset(a, ss, sizeof(a))
#define b_s binary_search
#define u_b upper_bound
#define l_b lower_bound
#define nl cout << endl
#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define in insert
#define fi first
#define se second
#define umap unordered_map
#define pqueue priority_queue
#define rr return
#define bits(n) __builtin_popcount(n)
const int N = 1e6 + 7;
const int MOD = (int)1e9 + 7;
const int MOD1 = (int)1e9 + 9;
const int MOD2 = 998244353;
const ld pi = atan2(0, -1);
const ld eps = 1e-9;
int tests = 1;
int test = 1;
template <class x, class y> x max(x a, y b) { return (a > b) ? a : b; }
template <class x, class y> x min(x a, y b) { return (a < b) ? a : b; }
template <class x, class y> x log(x n, y r) {
  return (n > r - 1) ? 1 + log(n / r, r) : 0;
}

bool isprime(int n);
bool ispalin(int num);
bool isleapyear(int year);
int __lcm(int a, int b);
int power(int x, int y);
int digitsum(int n);
int fact(int n);
int npr(int n, int r);
int ncr(int n, int r);
int evensum(int n);
int oddsum(int n);
int find_set(int v);
void make_set(int v);
void union_sets(int a, int b);
void sorts(string &str);

///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'
vector<int> adj[N], subset;
int vis[N] = {0};
///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.

int32_t main() {
  auto start = clock();
  ios_base::sync_with_stdio(0);
  cout.tie(0);
  cin.tie(0);
#ifndef ONLINE_JUDGE
  {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    freopen("error.txt", "w", stderr);
  }
#endif

  //  cout<<fixed;
  //  cout<<scientific;
  //  cout<<fixed<<setprecision(12);
  // cin >> tests;
  for (test = 1; test <= tests; test++) {
    // cout<<"Case #"<<test<<": ";
    ///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.

    int n;
    cin >> n;
    int a[n + 1], sum = 0;
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      sum += a[i];
    }

    int q;
    cin >> q;
    while (q--) {
      int x, y;
      cin >> x >> y;
      for (int i = 0; i < n; i++) {
        if (a[i] == x) {
          a[i] = y;
          sum += y - x;
        }
      }
      cout << sum << endl;
    }

    ///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.
  }
  cerr << endl
       << endl
       << endl
       << "Time : " << double(clock() - start) / CLOCKS_PER_SEC << endl;
  return 0;
}

bool isprime(int n) {
  for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0)
      return false;
  }
  return true;
}

bool ispalin(int num) {
  bool flag = false;
  int digit, rev = 0, n = num;
  do {
    digit = num % 10;
    rev = (rev * 10) + digit;
    num = num / 10;
  } while (num != 0);
  if (rev == n)
    flag = true;
  return flag;
}

bool isleapyear(int year) {
  if (year % 400 == 0)
    return true;

  if (year % 100 == 0)
    return false;

  if (year % 4 == 0)
    return true;
  return false;
}

int __lcm(int a, int b) { return (a * b) / __gcd(a, b); }

int power(int x, int y) {
  int temp;
  if (y == 0)
    return 1;
  temp = pow(x, y / 2);
  if (y % 2 == 0)
    return temp * temp;
  else
    return x * temp * temp;
}

int digitsum(int n) {
  int c = 0;
  while (n > 0) {
    c++;
    n /= 10;
  }
  return c;
}

int fact(int n) {
  if (n <= 1)
    return 1;
  return n * fact(n - 1);
}

int ncr(int n, int r) {
  long long p = 1, k = 1;
  if (n - r < r)
    r = n - r;

  if (r != 0) {
    while (r) {
      p *= n;
      k *= r;
      int m = __gcd(p, k);
      p /= m;
      k /= m;
      n--;
      r--;
    }
  } else
    p = 1;
  return p;
}

int npr(int n, int r) { return fact(n) / fact(n - r); }

int evensum(int n) { return (n / 2 * (n / 2 + 1)); }

int oddsum(int n) { return (((n + 1) / 2) * ((n + 1) / 2)); }

void sorts(string &str) { sort(str.begin(), str.end()); }