Can someone explain why DP solution is giving Memory Limit Exceeded error?

Revision en2, by anushka_me, 2024-12-11 14:37:15

[submission:296009471][problem:1420C1]Hey Codeforces army..

I am stuck in this problem 1420 C1 : Pokemon Army (Easy version)

Approach : for every index i , i either pick the element and afterwards based on the previous index i add it or subtract else i do not pick the element. Here is my solution:

include <bits/stdc++.h>

using namespace std;

long long int call(vector<vector> &dp,vector arr,long long int idx, long long int state,long long int n){ if(idx>n) return 0; if(dp[idx][state]!=-1) return dp[idx][state];

int a=0, b = call(dp,arr,idx+1,state,n);
if(state ==1){
    a = arr[idx];
}else{
    a= -arr[idx];
}
a += call(dp,arr,idx+1,!state,n);
return dp[idx][state] = max(a,b);

} int main(){ int t; cin>>t; for(int i=0;i<t;i++){ long long int n,q; cin>>n>>q; vector arr(n+1,0); for(int j=0;j<n;j++) cin>>arr[j]; vector<vector> dp(n+1,vector(2,-1)); long long int ans = call(dp,arr,0,1,n); cout<<ans<<endl;

}
return 0;

}

Tags dynamic programming, memory limit excceded, need help

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English anushka_me 2024-12-11 14:37:15 50
en1 English anushka_me 2024-12-11 14:29:25 1227 Initial revision (published)