GEtting WA even though my code passes all the test cases in the forum !!
I think , there may be a problem in output format or the input format !
Please help !
#include<stdio.h>
#include<string.h>
static int weight=0;
int Knapsack(int W,int v[],int wt[],int n)
{
int i=0,w=0,et=0,tr=0,min=0,j=0,KT=0,call=0;
int keeper[n+1][W+1];
int k[n+1][W+1];
int keep[n+1];
int flag=0;
for(i=0;i<=n;i++)
{
for(w=0;w<=W;w++)
{
if(i==0||w==0)
k[i][w]=0;
else{
if(wt[i-1]<=w)
{
if((v[i-1]+k[i-1][w-wt[i-1]])>k[i-1][w])
{
k[i][w]=v[i-1]+k[i-1][w-wt[i-1]];
keeper[i][w]=1;
}
else
{
k[i][w]=k[i-1][w];
keeper[i][w]=0;
}
}
else
{
k[i][w]=k[i-1][w];
keeper[i][w]=0;
}
}
}
}
KT=W;
for(i=n;i>=1;i--)
{
if(keeper[i][KT]==1)
{
keep[et]=v[i-1];
et+=1;
KT-=wt[i-1];
}
}
for(i=0;i<et;i++)
{
min=26;
for(j=0;j<n;j++)
{
if(v[j]==keep[i])
{
if(min>wt[j])
{
min = wt[j];
call=j;
}
}
}
if(min!=26)
{
weight+=min;
v[call]=11;
}
}
return k[n][W];
}
int main()
{
int n=0,W=0,i=0,p=0,max=0,j=0;
while(1)
{
scanf("%d%d\n",&W,&n);
if(W==0 && n==0)
break;
int wt[n];
int fun[n];
for(i=0;i<n;i++)
scanf("%d%d\n",&wt[i],&fun[i]);
p=Knapsack(W,fun,wt,n);
printf("%d %d\n",weight,p);
weight=0;
}
return 0;
}