need help!!

Revision en1, by shakil1113, 2020-09-06 22:43:41

why I am getting TLE on this proble : https://codeforces.me/contest/1389/problem/B my code :

include<bits/stdc++.h>

using namespace std;

int n, k, z; long long dp[100005][10];

long long sol(int arr[], int pos, int total, int left) {

if (pos >= n || pos < 0 || total == 0) return 0;
if (dp[pos][left] != -1) return dp[pos][left];
long long ret = 0;
if (pos < n)ret = max(ret, arr[pos] + sol(arr, pos + 1, total - 1, left));

if (left && pos > 0 && total) {
    ret = max(ret, sol(arr, pos - 1, total - 1, left - 1) + arr[pos]);
}


return dp[pos][left] = ret;

}

int main() { int cs; scanf("%d", &cs); while (cs--) { memset(dp, -1, sizeof(dp)); scanf("%d %d %d", &n, &k, &z); int arr[n]; for (int i = 0; i < n; i++) scanf("%d", &arr[i]); long long ans = sol(arr, 1, k, z) + arr[0]; printf("%lld\n", ans); } }

Thanks in advance

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English shakil1113 2020-09-06 22:45:58 777
en1 English shakil1113 2020-09-06 22:43:41 912 Initial revision (published)