SPOJ – ABA12C – Buying Apples!

#include<stdio.h>
#define INF 1000000000000
typedef long long ll;
ll min(ll a,ll b)
{
 if(a>=b)
 return b;
 else
 return a;
}
ll dp[103][103];
int main()
{
 ll t,n,k;
 ll p[103];
 scanf("%lld",&t);
 while(t--)
 {
 scanf("%lld%lld",&n,&k);
 for(ll i=1;i<=k;i++)
 scanf("%lld",&p[i]);
 for(ll i=0;i<=k;i++)
 dp[i][0]=INF;
 for(ll i=1;i<=k;i++)
 {
 for(ll j=1;j<=k;j++)
 dp[i][j]=INF;
 }
 for(ll i=0;i<=k;i++)
 dp[0][i]=0;
 dp[0][0]=0;
 for(ll i=1;i<=k;i++)
 {
 for(ll j=1;j<=k;j++)
 {
 dp[i][j]=-1;
 if(j>i || p[j]==-1)
 dp[i][j]=dp[i][j-1];
 else
 {
 if(dp[i-j][j]!=INF)
 dp[i][j]=min(dp[i][j-1],p[j]+dp[i-j][j]);
 }
 
 }
 }
 if(dp[k][k]!=-1)
 printf("%lld\n",dp[k][k]);
 else
 printf("-1\n");
 }
 return 0;
}

Leave a comment