Hello Sir, My C++ recursive code giving TLE for two large cases can you pls review it :) //? Coin combinations CSES problem set #include using namespace std ; #define MOD 1000000007 #define ll long long ll rec(vector &v , ll target , vector &memo) { if( memo[ target ] > 0) return memo[target] ; if(target == 0) return 1 ; ll sum = 0 ; for(ll i = 0 ; i < v.size() ; i ++) { if(target - v[i] < 0) break; sum += rec(v , target - v[i] , memo) ; sum = sum % MOD ; } memo[target] = sum ; return sum ; } int main () { ll n , x ; cin >> n >> x ; vector v(n) ; for(ll i = 0 ; i < n ; i++) cin >> v[i] ; sort(v.begin() , v.end()) ; vector memo (x + 1 , -1) ; memo[0] = 1 ; ll ans = rec(v , x , memo) ; cout
Hello Sir, My C++ recursive code giving TLE for two large cases can you pls review it :)
//? Coin combinations CSES problem set
#include
using namespace std ;
#define MOD 1000000007
#define ll long long
ll rec(vector &v , ll target , vector &memo) {
if( memo[ target ] > 0) return memo[target] ;
if(target == 0) return 1 ;
ll sum = 0 ;
for(ll i = 0 ; i < v.size() ; i ++) {
if(target - v[i] < 0) break;
sum += rec(v , target - v[i] , memo) ;
sum = sum % MOD ;
}
memo[target] = sum ;
return sum ;
}
int main ()
{
ll n , x ;
cin >> n >> x ;
vector v(n) ;
for(ll i = 0 ; i < n ; i++) cin >> v[i] ;
sort(v.begin() , v.end()) ;
vector memo (x + 1 , -1) ;
memo[0] = 1 ;
ll ans = rec(v , x , memo) ;
cout