Problem p02555 (C++) — buggy submission, verdict: Runtime Error


#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define speed                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define ll long long
#define pb push_back
#define mem1(a) memset(a, -1, sizeof(a))
#define mem0(a) memset(a, 0, sizeof(a))
#define endl "\\n"
#define mod 1000000007
#define mod1 998244353
#define ff first
#define ss second
#define MAX 500005
#define N 200005
#define INF 1000000009
#define all(v) v.begin(), v.end()
#define sbit(a) __builtin_popcount(a)
template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef pair<ll, ll> pll;
typedef pair<pll, ll> ppl;
typedef map<ll, ll> mpll;
typedef map<vector<ll>, ll> mpvl;
ll power(ll x, ll y, ll p) {
  ll res = 1;

  x = x % p;

  if (x == 0)
    return 0;
  while (y > 0) {

    if (y & 1)
      res = (res * x) % p;

    y = y >> 1;
    x = (x * x) % p;
  }

  return res;
}
ll l[2005][2005] = {0};

void initialize() {

  // 0C0 = 1
  l[0][0] = 1;
  for (ll i = 1; i < 2002; i++) {
    // Set every nCr = 1 where r = 0
    l[i][0] = 1;
    for (ll j = 1; j < i + 1; j++) {

      // Value for the current cell of Pascal's triangle
      l[i][j] = (l[i - 1][j - 1] % mod + l[i - 1][j] % mod) % mod;
    }
  }
}

void solve() {
  ll s;
  cin >> s;
  if (s == 1 || s == 2) {
    cout << 0 << endl;
    return;
  }
  ll ans = 0;
  // cout<<l[2000][20]<<endl;
  for (ll i = 1; i <= s; i++) {
    if (s - i * 3 >= 0) {

      ans += l[s - 3 * i + i - 1][s - 3 * i];
      // cout<<l[4][4]<<endl;
      ans %= mod;
      // cout<<ans<<endl;
    }
  }
  cout << ans << endl;
}

int main() {
  speed;
  initialize();
  ll kk;
  kk = 1;
  // cin >> kk;
  while (kk--) {
    solve();
  }
  return 0;
}

Error: 0

Fixed submission:


#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define speed                                                                  \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define ll long long
#define pb push_back
#define mem1(a) memset(a, -1, sizeof(a))
#define mem0(a) memset(a, 0, sizeof(a))
#define endl "\\n"
#define mod 1000000007
#define mod1 998244353
#define ff first
#define ss second
#define MAX 500005
#define N 200005
#define INF 1000000009
#define all(v) v.begin(), v.end()
#define sbit(a) __builtin_popcount(a)
template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef pair<ll, ll> pll;
typedef pair<pll, ll> ppl;
typedef map<ll, ll> mpll;
typedef map<vector<ll>, ll> mpvl;
ll power(ll x, ll y, ll p) {
  ll res = 1;

  x = x % p;

  if (x == 0)
    return 0;
  while (y > 0) {

    if (y & 1)
      res = (res * x) % p;

    y = y >> 1;
    x = (x * x) % p;
  }

  return res;
}
int l[2005][2005] = {0};

int initialize() {

  // 0C0 = 1
  l[0][0] = 1;
  for (int i = 1; i < 2005; i++) {
    // Set every nCr = 1 where r = 0
    l[i][0] = 1;
    for (int j = 1; j < i + 1; j++) {

      // Value for the current cell of Pascal's triangle
      l[i][j] = (l[i - 1][j - 1] % mod + l[i - 1][j] % mod) % mod;
    }
  }
}

// Function to return the value of nCr
int nCr(int n, int r) {
  // Return nCr
  return (l[n][r]);
}

void solve() {
  ll s;
  cin >> s;
  if (s == 1 || s == 2) {
    cout << 0 << endl;
    return;
  }
  ll ans = 0;
  for (ll i = 1; i <= s; i++) {
    if (s - i * 3 >= 0) {

      ans += l[s - 3 * i + i - 1][s - 3 * i];
      // cout<<l[4][4]<<endl;
      ans %= mod;
      // cout<<ans<<endl;
    }
  }
  cout << ans << endl;
}

int main() {
  speed;
  initialize();
  ll kk;
  kk = 1;
  // cin >> kk;
  while (kk--) {
    solve();
  }
  return 0;
}