Cod sursa(job #964205)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 20 iunie 2013 13:02:56
Problema Energii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<stdio.h>
int cost[1001][5001],pret[1001],v[1001];
int main()
{
    FILE *fin,*fout;
    fin=fopen("energii.in","r");
    fout=fopen("energii.out","w");
    int n,sum;
    fscanf(fin,"%d%d",&n,&sum);
    int i,maxwidth=0;
    for(i=1; i<=n; i++)
    {
        fscanf(fin,"%d%d",&v[i],&pret[i]);
        maxwidth+=v[i];
    }
    if(maxwidth>=sum)
    {

    for(i=0; i<=sum; i++)
        cost[0][i]=999999999;
    for(i=0; i<=n; i++)
        cost[i][0]=999999999;
    for(i=1; i<=n; i++)
    {
        int j;
        for(j=1; j<=sum; j++)
        {
            if(v[i]>=j)
            {
                if(cost[i-1][j]>pret[i])
                {
                    cost[i][j]=pret[i];
                }
                else
                {
                    cost[i][j]=cost[i-1][j];
                }
            }
            else
            {
                if(cost[i-1][j]<cost[i-1][j-v[i]]+pret[i])
                    cost[i][j]=cost[i-1][j];
                else
                    cost[i][j]=cost[i-1][j-v[i]]+pret[i];
            }
        }
    }
    fprintf(fout,"%d",cost[n][sum]);
    }
    else
    fprintf(fout,"%d",-1);
    return 0;
}