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

#include <algorithm>
#include <cctype>
#include <climits>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <typeinfo>
#include <utility>
#include <vector>
#define LEN 100005
using namespace std;
using ll = long long;
double pi() { return 3.14; }
int sum(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }
ll LGCD(ll x, ll y) {
  if (x % y == 0)
    return y;
  else
    return LGCD(y, x % y);
}
ll LLCM(ll x, ll y) { return x * y / LGCD(x, y); }

int GCD(int x, int y) {
  if (x % y == 0)
    return y;
  else
    return GCD(y, x % y);
}
int LCM(int x, int y) { return x * y / GCD(x, y); }
ll dpc[10000][10000];
ll combination(ll n, ll r) {
  if (n == r) {
    return dpc[n][n] = 1;
  } else if (r == 0) {
    return dpc[n][0] = 1;
  } else if (r == 1) {
    return dpc[n][1] = n;
  } else if (dpc[n][r]) {
    return dpc[n][r];
  } else {
    return dpc[n][r] = combination(n - 1, r - 1) + combination(n - 1, r);
  }
}

ll nCr(ll n, ll r) {
  ll ans = 1;
  for (int i = n; i > n - r; --i) {
    ans = ans * i;
  }
  for (int i = 1; i < r + 1; ++i) {
    ans = ans / i;
  }
  return ans;
}

bool chsK(string s) {
  int n = s.length();
  if (n % 2 == 0) {
    for (int i = 0; i <= n / 2; i++) {
      if (s[i] != s[n - i - 1])
        return false;
    }
  } else {
    for (int i = 0; i <= n / 2; i++) {
      if (s[i] != s[n - i - 1])
        return false;
    }
  }
  return true;
}

int check(int X, int Y, int K, int J) {
  int t;
  if (K >= Y && J <= X)
    t = X - J + K - Y + 1;
  else if (K <= X || J >= Y)
    t = K - J;
  else if (J >= X && K <= Y)
    t = min(K - J, J - X + Y - K + 1);
  else if (K >= X && K <= Y)
    t = min(K - J, X - J + Y - K + 1);
  else if (J >= X && J <= Y)
    t = min(K - J, J - X + K - Y + 1);
  return t;
}

int main() {

  int n, x, y;
  cin >> n >> x >> y;
  int count;

  vector<int> cou(n);
  // for (int i = 1;i < n;i++) {
  // count = 0;
  for (int j = 1; j <= n - 1; j++) {
    for (int k = j + 1; k <= n; k++) {
      cou[check(x, y, k, j)]++;
    }
  }
  // cout << count << endl;
  //}
  for (int i = 1; i < n; i++)
    cout << cou[i] << endl;
  return 0;
}

Error: TLE

Fixed submission:

#include <algorithm>
#include <cctype>
#include <climits>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <typeinfo>
#include <utility>
#include <vector>
#define LEN 100005
using namespace std;
using ll = long long;
double pi() { return 3.14; }
int sum(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }
ll LGCD(ll x, ll y) {
  if (x % y == 0)
    return y;
  else
    return LGCD(y, x % y);
}
ll LLCM(ll x, ll y) { return x * y / LGCD(x, y); }

int GCD(int x, int y) {
  if (x % y == 0)
    return y;
  else
    return GCD(y, x % y);
}
int LCM(int x, int y) { return x * y / GCD(x, y); }
ll dpc[10000][10000];
ll combination(ll n, ll r) {
  if (n == r) {
    return dpc[n][n] = 1;
  } else if (r == 0) {
    return dpc[n][0] = 1;
  } else if (r == 1) {
    return dpc[n][1] = n;
  } else if (dpc[n][r]) {
    return dpc[n][r];
  } else {
    return dpc[n][r] = combination(n - 1, r - 1) + combination(n - 1, r);
  }
}

ll nCr(ll n, ll r) {
  ll ans = 1;
  for (int i = n; i > n - r; --i) {
    ans = ans * i;
  }
  for (int i = 1; i < r + 1; ++i) {
    ans = ans / i;
  }
  return ans;
}

bool chsK(string s) {
  int n = s.length();
  if (n % 2 == 0) {
    for (int i = 0; i <= n / 2; i++) {
      if (s[i] != s[n - i - 1])
        return false;
    }
  } else {
    for (int i = 0; i <= n / 2; i++) {
      if (s[i] != s[n - i - 1])
        return false;
    }
  }
  return true;
}

int main() {

  int n, x, y;
  cin >> n >> x >> y;
  int count;
  int t;
  for (int i = 1; i < n; i++) {
    count = 0;
    for (int j = 1; j <= n - 1; j++) {
      for (int k = j + 1; k <= n; k++) {
        if (k >= y && j <= x)
          t = x - j + k - y + 1;
        else if (k <= x || j >= y)
          t = k - j;
        else if (j >= x && k <= y)
          t = min(k - j, j - x + y - k + 1);
        else if (k >= x && k <= y)
          t = min(k - j, x - j + y - k + 1);
        else if (j >= x && j <= y)
          t = min(k - j, j - x + k - y + 1);
        if (t == i)
          count++;
      }
    }
    cout << count << endl;
  }
  return 0;
}