I don't understand why my code is giving TLE. Not able to catch the bug. Any help would be appreciated !!!↵
[Link to Question](https://atcoder.jp/contests/dp/tasks/dp_d)↵
↵
↵
~~~~~↵
#include<bits/stdc++.h>↵
# define all(a) a.begin(), a.end()↵
#define MOD (long long int )1e9+7↵
using namespace std;↵
↵
typedef long long int ll;↵
↵
ll dp[110][100010];↵
ll solve(int index, ll currweight, ll weight, vector<vector<int>> nums, int n) {↵
if (index == n)↵
return 0;↵
if (dp[index][currweight] != -1)↵
return dp[index][currweight];↵
ll res = solve(index+1, currweight, weight, nums, n);↵
if (currweight+nums[index][0] <= weight) {↵
res = max(res, nums[index][1] + solve(index+1, currweight+nums[index][0], weight, nums, n));↵
}↵
dp[index][currweight] = res;↵
return res;↵
}↵
↵
↵
int main() {↵
#ifndef ONLINE_JUDGE↵
// for getting input from input.txt↵
freopen("input.txt", "r", stdin);↵
// for writing output to output.txt↵
freopen("output.txt", "w", stdout);↵
#endif↵
int n, k;↵
cin >> n >> k;↵
vector<vector<int>> nums(n, vector<int>(2));↵
for (int i=0; i<n; i++) cin >> nums[i][0] >> nums[i][1];↵
memset(dp, -1, sizeof(dp));↵
ll res = solve(0, 0, k, nums, n); ↵
cout << res << endl;↵
return 0;↵
}↵
~~~~~↵
↵
[Link to Question](https://atcoder.jp/contests/dp/tasks/dp_d)↵
↵
↵
~~~~~↵
#include<bits/stdc++.h>↵
# define all(a) a.begin(), a.end()↵
#define MOD (long long int )1e9+7↵
using namespace std;↵
↵
typedef long long int ll;↵
↵
ll dp[110][100010];↵
ll solve(int index, ll currweight, ll weight, vector<vector<int>> nums, int n) {↵
if (index == n)↵
return 0;↵
if (dp[index][currweight] != -1)↵
return dp[index][currweight];↵
ll res = solve(index+1, currweight, weight, nums, n);↵
if (currweight+nums[index][0] <= weight) {↵
res = max(res, nums[index][1] + solve(index+1, currweight+nums[index][0], weight, nums, n));↵
}↵
dp[index][currweight] = res;↵
return res;↵
}↵
↵
↵
int main() {↵
#ifndef ONLINE_JUDGE↵
// for getting input from input.txt↵
freopen("input.txt", "r", stdin);↵
// for writing output to output.txt↵
freopen("output.txt", "w", stdout);↵
#endif↵
int n, k;↵
cin >> n >> k;↵
vector<vector<int>> nums(n, vector<int>(2));↵
for (int i=0; i<n; i++) cin >> nums[i][0] >> nums[i][1];↵
memset(dp, -1, sizeof(dp));↵
ll res = solve(0, 0, k, nums, n); ↵
cout << res << endl;↵
return 0;↵
}↵
~~~~~↵
↵