ciao sono alle prime armi con la programmazione dinamica ed è da 2 giorni che provo a risolvere questo problema non capendo perché in alcuni testcase va in altri no e in altri fa timed out, grazie in anticipo per l’aiuto
#include <stdio.h>
#include <assert.h>
#include
#define MAXN 5000
#define MAXK 5000
#define MAXP 1000000
int N,K;
int P[MAXN];
int f(int p,int i,int v)
{
if(i==N)
return p;
int a,b;
a=f(p,i+1,v);
b=f(p-v[i],i+1,v);
if(abs(K-a)<abs(K-b))
return a;
else
return b;
}
int main() {
FILE *fr, *fw;
int i;
fr = fopen("input.txt", "r");
fw = fopen("output.txt", "w");
assert(2 == fscanf(fr, "%d %d", &N, &K));
for(i=0; i<N; i++)
assert(1 == fscanf(fr, "%d", &P[i]));
fprintf(fw, "%d\n", f(K,0,P));
fclose(fr);
fclose(fw);
return 0;
}