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

#define __mode_debug__
/*   ξ
     ll
   ＿ll＿
 ／  ∞  ＼
│*  Ａ  *│
│*  Ｃ  *│
│*  祈  *│
│*  願  *│
│*      *│
 ￣￣￣￣￣    */
// C++14 (GCC 5.4.1)
#include <bits/stdc++.h>
using namespace std;
#ifdef __mode_debug__
#define DBG
#else
#define DBG if (false)
#endif

#define LLINF (1LL << 60)
using ll = long long;
#define mod 1000000007

#define whole(a) (a).begin(), (a).end()
#define rwhole(a) (a).rbegin(), (a).rend()

#define repd(i, a, b) for (ll i = (a); i < (b); i++)
#define rep(i, n) repd(i, 0, n)
#define rrepd(i, a, b) for (ll i = (a); i >= (b); i--)
#define each(itr, ds) for (auto itr = (ds).begin(); itr != (ds).end(); itr++)

template <typename T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}

template <typename T> inline string toString(const T &a) {
  ostringstream oss;
  oss << a;
  return oss.str();
}

// DUMP
//   ostream vector<T> , vector<vector<T>> , set<T> ,queue<T> ,
//   priority_queue<T> , pair<T,U> , map<T,U>
template <class T> ostream &operator<<(ostream &os, vector<T> &vec) {
  os << "{ ";
  rep(i, vec.size()) os << ((i == 0) ? "" : ", ") << i << ":" << vec[i];
  os << " }";
  return os;
}
template <class T> ostream &operator<<(ostream &os, vector<vector<T>> &vec) {
  os << "{" << endl;
  rep(i, vec.size()) os << "\\t   " << i << ":" << vec[i]
                        << ((i == vec.size() - 1) ? "" : ",") << endl;
  os << "\\t }";
  return os;
}
template <class T> ostream &operator<<(ostream &os, set<T> &p) {
  os << "{ ";
  each(itr, p) os << ((itr == p.begin()) ? "" : ", ") << *itr;
  os << " }";
  return os;
}
template <class T> ostream &operator<<(ostream &os, queue<T> &p) {
  queue<T> q(p);
  os << "[< " << (q.empty() ? " <]" : "");
  while (!q.empty()) {
    os << q.front();
    q.pop();
    os << (q.empty() ? " <]" : ", ");
  }
  return os;
}
template <class T> ostream &operator<<(ostream &os, priority_queue<T> &p) {
  priority_queue<T> q(p);
  os << "[< " << (q.empty() ? " <]" : "");
  while (!q.empty()) {
    os << q.top();
    q.pop();
    os << (q.empty() ? " <]" : ", ");
  }
  return os;
}
template <class T, class U> ostream &operator<<(ostream &os, pair<T, U> &p) {
  os << "(" << p.first << "," << p.second << ")";
  return os;
}
template <class T, class U> ostream &operator<<(ostream &os, map<T, U> &p) {
  os << "{ ";
  each(itr, p) os << ((itr == p.begin()) ? "" : ", ") << itr->first << ":"
                  << itr->second;
  os << " }";
  return os;
}
void dump_f(string &nm, char t) { cerr << endl; }
template <class T, class... Ts>
void dump_f(string &nm, char t, T &&x, Ts &&...ts) {
  int l = nm.find_first_of(',');
  string name(nm, 0, l), nx(nm, l + 1, -1);
  if (t == '\\n')
    cerr << "  " << name << "\\t: " << x << t;
  else
    cerr << name << ": " << x << "," << t;
  dump_f(nx, t, forward<Ts>(ts)...);
}
template <class... Ts> void dump_m(int &&ln, string &&nm, char t, Ts &&...ts) {
  cerr << "[ln: " << ln << "]" << t;
  dump_f(nm, t, forward<Ts>(ts)...);
}
#define dump(...) DBG dump_m(__LINE__, #__VA_ARGS__, '\\n', __VA_ARGS__)
#define dl(...) DBG dump_m(__LINE__, #__VA_ARGS__, '\\t', __VA_ARGS__)

#define lower_bound_idx(V, c) distance(V.begin(), lower_bound(whole(V), c))

int main() {
  ios::sync_with_stdio(false); // printf<=>cout
  cin.tie(nullptr);            // cin<=>cout

  ll N, M, K;
  cin >> N >> M >> K;
  vector<ll> A(N), B(M);
  rep(i, N) cin >> A[i];
  rep(i, M) cin >> B[i];
  vector<ll> As(N + 1, 0), Bs(M + 1, 0);
  rep(i, N) As[i + 1] = As[i] + A[i];
  rep(i, M) Bs[i + 1] = Bs[i] + B[i];

  //-----------------------------------

  ll ans = 0, j = M;
  rep(i, N + 1) {
    if (As[i] > K)
      break;
    while (j >= 0) {
      if (As[i] + Bs[j] <= K) {
        chmax(ans, i + j);
        break;
      }
      j--;
    }
  }

  cout << ans << '\\n';

  return (0);
}

Error: TLE

Fixed submission:

#define __mode_debug__
/*   ξ
     ll
   ＿ll＿
 ／  ∞  ＼
│*  Ａ  *│
│*  Ｃ  *│
│*  祈  *│
│*  願  *│
│*      *│
 ￣￣￣￣￣    */
// C++14 (GCC 5.4.1)
#include <bits/stdc++.h>
using namespace std;
#ifdef __mode_debug__
#define DBG
#else
#define DBG if (false)
#endif

#define LLINF (1LL << 60)
using ll = long long;
#define mod 1000000007

#define whole(a) (a).begin(), (a).end()
#define rwhole(a) (a).rbegin(), (a).rend()

#define repd(i, a, b) for (ll i = (a); i < (b); i++)
#define rep(i, n) repd(i, 0, n)
#define rrepd(i, a, b) for (ll i = (a); i >= (b); i--)
#define each(itr, ds) for (auto itr = (ds).begin(); itr != (ds).end(); itr++)

template <typename T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}

template <typename T> inline string toString(const T &a) {
  ostringstream oss;
  oss << a;
  return oss.str();
}

// DUMP
//   ostream vector<T> , vector<vector<T>> , set<T> ,queue<T> ,
//   priority_queue<T> , pair<T,U> , map<T,U>
template <class T> ostream &operator<<(ostream &os, vector<T> &vec) {
  os << "{ ";
  rep(i, vec.size()) os << ((i == 0) ? "" : ", ") << i << ":" << vec[i];
  os << " }";
  return os;
}
template <class T> ostream &operator<<(ostream &os, vector<vector<T>> &vec) {
  os << "{" << endl;
  rep(i, vec.size()) os << "\\t   " << i << ":" << vec[i]
                        << ((i == vec.size() - 1) ? "" : ",") << endl;
  os << "\\t }";
  return os;
}
template <class T> ostream &operator<<(ostream &os, set<T> &p) {
  os << "{ ";
  each(itr, p) os << ((itr == p.begin()) ? "" : ", ") << *itr;
  os << " }";
  return os;
}
template <class T> ostream &operator<<(ostream &os, queue<T> &p) {
  queue<T> q(p);
  os << "[< " << (q.empty() ? " <]" : "");
  while (!q.empty()) {
    os << q.front();
    q.pop();
    os << (q.empty() ? " <]" : ", ");
  }
  return os;
}
template <class T> ostream &operator<<(ostream &os, priority_queue<T> &p) {
  priority_queue<T> q(p);
  os << "[< " << (q.empty() ? " <]" : "");
  while (!q.empty()) {
    os << q.top();
    q.pop();
    os << (q.empty() ? " <]" : ", ");
  }
  return os;
}
template <class T, class U> ostream &operator<<(ostream &os, pair<T, U> &p) {
  os << "(" << p.first << "," << p.second << ")";
  return os;
}
template <class T, class U> ostream &operator<<(ostream &os, map<T, U> &p) {
  os << "{ ";
  each(itr, p) os << ((itr == p.begin()) ? "" : ", ") << itr->first << ":"
                  << itr->second;
  os << " }";
  return os;
}
void dump_f(string &nm, char t) { cerr << endl; }
template <class T, class... Ts>
void dump_f(string &nm, char t, T &&x, Ts &&...ts) {
  int l = nm.find_first_of(',');
  string name(nm, 0, l), nx(nm, l + 1, -1);
  if (t == '\\n')
    cerr << "  " << name << "\\t: " << x << t;
  else
    cerr << name << ": " << x << "," << t;
  dump_f(nx, t, forward<Ts>(ts)...);
}
template <class... Ts> void dump_m(int &&ln, string &&nm, char t, Ts &&...ts) {
  cerr << "[ln: " << ln << "]" << t;
  dump_f(nm, t, forward<Ts>(ts)...);
}
#define dump(...) DBG dump_m(__LINE__, #__VA_ARGS__, '\\n', __VA_ARGS__)
#define dl(...) DBG dump_m(__LINE__, #__VA_ARGS__, '\\t', __VA_ARGS__)

#define lower_bound_idx(V, c) distance(V.begin(), lower_bound(whole(V), c))

int main() {
  ios::sync_with_stdio(false); // printf<=>cout
  cin.tie(nullptr);            // cin<=>cout

  ll N, M, K;
  cin >> N >> M >> K;
  vector<ll> A(N), B(M);
  rep(i, N) cin >> A[i];
  rep(i, M) cin >> B[i];
  vector<ll> As(N + 1, 0), Bs(M + 1, 0);
  rep(i, N) As[i + 1] = As[i] + A[i];
  rep(i, M) Bs[i + 1] = Bs[i] + B[i];

  //-----------------------------------

  ll ans = 0;
  rep(i, N + 1) {
    rep(j, M + 1) {
      if (As[i] + Bs[j] <= K)
        chmax(ans, i + j);
      else
        break;
    }
  }

  cout << ans << '\\n';

  return (0);
}