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

// #include <bits/stdc++.h>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <set>
#include <string>
#include <vector>
#define rep(i, n) for (int i = 0; i < n; i++)
#define exf(x)                                                                 \\
  for (auto &&tmp : x) {                                                       \\
    cout << tmp << endl;                                                       \\
  } // 拡張for
#define testP                                                                  \\
  cout << "------------------ test ------------------"                         \\
       << endl;                                     // 動作確認テスト
#define testX(x) cout << "testout : " << x << endl; // テストアウト
typedef long long ll;
using namespace std;
const int MOD{int(1e9 + 7)}; // int 1000000007
const int inf{int(1e9)};     // inf = 1000000000

// ------------------ ベクター表示 ------------------ //
void printVec(vector<ll> &vec) {
  cout << "";
  for (auto it = vec.begin(); it != vec.end(); it++)
    cout << *it << " ";
  cout << endl;
}

// ------------------ ベクター合計 ------------------ //
int sumVec(vector<int> v) {
  int sum = 0;
  for (size_t i = 0; i < v.size(); i++)
    sum += v[i];
  return sum;
}

// ------------------ int -> Vector 変換 ------------------ //
vector<int> ItoVec(int x) {

  vector<int> xVec;

  while (x > 0) {
    int tmp = x % 10;
    xVec.insert(xVec.begin(), tmp);
    x /= 10;
  }

  return xVec;
}

// ------------------ 最大公約数関数 ------------------ //
int GCD(int x, int y) {
  if (x == 0)
    return y;
  else
    GCD(y % x, x);
}

// -------------------------------------------------- //
// ------------------ ここから本編 ------------------ //
// -------------------------------------------------- //

int main(void) {

  ll A, B, C, K;
  cin >> A >> B >> C >> K;

  ll ans = 0;

  if (K > 0 && A != 0) {
    ans += (K > A ? A : K);
    K = K - A;
  }
  if (K > 0 && B != 0) {
    K = K - B;
  }
  if (K > 0 && C != 0) {
    ans = ans + K * (-1);
  }

  cout << ans << endl;

  return 0;
}


Error: TLE

Fixed submission:

// #include <bits/stdc++.h>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <set>
#include <string>
#include <vector>
#define rep(i, n) for (int i = 0; i < n; i++)
#define exf(x)                                                                 \\
  for (auto &&tmp : x) {                                                       \\
    cout << tmp << endl;                                                       \\
  } // 拡張for
#define testP                                                                  \\
  cout << "------------------ test ------------------"                         \\
       << endl;                                     // 動作確認テスト
#define testX(x) cout << "testout : " << x << endl; // テストアウト
typedef long long ll;
using namespace std;
const int MOD{int(1e9 + 7)}; // int 1000000007
const int inf{int(1e9)};     // inf = 1000000000

// ------------------ ベクター表示 ------------------ //
void printVec(vector<ll> &vec) {
  cout << "";
  for (auto it = vec.begin(); it != vec.end(); it++)
    cout << *it << " ";
  cout << endl;
}

// ------------------ ベクター合計 ------------------ //
int sumVec(vector<int> v) {
  int sum = 0;
  for (size_t i = 0; i < v.size(); i++)
    sum += v[i];
  return sum;
}

// ------------------ int -> Vector 変換 ------------------ //
vector<int> ItoVec(int x) {

  vector<int> xVec;

  while (x > 0) {
    int tmp = x % 10;
    xVec.insert(xVec.begin(), tmp);
    x /= 10;
  }

  return xVec;
}

// ------------------ 最大公約数関数 ------------------ //
int GCD(int x, int y) {
  if (x == 0)
    return y;
  else
    GCD(y % x, x);
}

// -------------------------------------------------- //
// ------------------ ここから本編 ------------------ //
// -------------------------------------------------- //

int main(void) {

  int A, B, C, K;
  cin >> A >> B >> C >> K;

  int ans = 0;

  rep(i, K) {
    if (A != 0) {
      ans += 1;
      A--;
    } else if (B != 0) {
      ans += 0;
      B--;
    } else {
      ans -= 1;
      C--;
    }
  }
  cout << ans << endl;

  return 0;
}