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

#include <algorithm>
#include <cmath>
#include <functional>
#include <iomanip>
#include <iostream>
#include <numeric>
#include <queue>
#include <stack>
#include <vector>

#define repd(i, a, b) for (int i = (a); i < (b); i++)
#define rep(i, n) repd(i, 0, n)
typedef long long ll;

using namespace std;

int inputValue() {
  int a;
  cin >> a;
  return a;
};

void inputArray(int *p, int a){rep(i, a){cin >> p[i];
}
}
;

long long inputValueLongLong() {
  long long a;
  cin >> a;
  return a;
};

void inputVector(vector<int> *p, int a) {
  rep(i, a) {
    int input;
    cin >> input;
    p->push_back(input);
  }
}

void inputVectorString(vector<string> *p, long long a) {
  rep(i, a) {
    string input;
    cin >> input;
    p->push_back(input);
  }
}

template <typename T> void output(T a, int precision) {
  if (precision > 0) {
    cout << setprecision(precision) << a << "\\n";
  } else {
    cout << a << "\\n";
  }
}

const long long MOD = 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 + 7;

int main(int argc, const char *argv[]) {
  const double PI = 3.14159265358979323846;
  // source code
  long long N = inputValueLongLong();
  vector<string> S;
  long long counter = 1;

  // inputVectorString(*S,N);
  for (long long i = 0; i < N; i++) {
    string input;
    cin >> input;
    S.push_back(input);
  }

  std::sort(S.begin(), S.end());
  S.erase(std::unique(S.begin(), S.end()), S.end());
  cout << S.size() << endl;

  // for(int i=1;i<N;i++){
  //     cin >> S[i];
  //     bool flag = false;
  //     for(int j=0;j<i;j++){
  //         if(S[j].compare(S[i]) == 0){
  //             flag = true;
  //             break;
  //         }
  //     }
  //     if(flag == false){
  //         counter++;
  //     }
  // }

  // cout << counter << endl;

  return 0;
}

Error: TLE

Fixed submission:

#include <algorithm>
#include <cmath>
#include <functional>
#include <iomanip>
#include <iostream>
#include <numeric>
#include <queue>
#include <stack>
#include <vector>

#define repd(i, a, b) for (int i = (a); i < (b); i++)
#define rep(i, n) repd(i, 0, n)
typedef long long ll;

using namespace std;

int inputValue() {
  int a;
  cin >> a;
  return a;
};

void inputArray(int *p, int a){rep(i, a){cin >> p[i];
}
}
;

long long inputValueLongLong() {
  long long a;
  cin >> a;
  return a;
};

void inputVector(vector<int> *p, int a) {
  rep(i, a) {
    int input;
    cin >> input;
    p->push_back(input);
  }
}

template <typename T> void output(T a, int precision) {
  if (precision > 0) {
    cout << setprecision(precision) << a << "\\n";
  } else {
    cout << a << "\\n";
  }
}

const long long MOD = 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 * 10 + 7;

int main(int argc, const char *argv[]) {
  const double PI = 3.14159265358979323846;
  // source code
  long long N = inputValueLongLong();
  std::string S[N];
  cin >> S[0];
  long long counter = 1;

  for (int i = 1; i < N; i++) {
    cin >> S[i];
    bool flag = false;
    for (int j = 0; j < i; j++) {
      if (S[j].compare(S[i]) == 0) {
        flag = true;
        break;
      }
    }
    if (flag == false) {
      counter++;
    }
  }

  cout << counter << endl;

  return 0;
}