Cod sursa(job #879099)

Utilizator TodeaDariustodea darius TodeaDarius Data 14 februarie 2013 22:38:49
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
using namespace std;
int g,w,e,c,v[3][5005];
#define nrmare 1900000000
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&g,&w);
    for(int i=1;i<=w;i++)
        v[0][i]=nrmare;
    for(int i=1;i<=g;i++)
    {
        scanf("%d%d",&e,&c);
        for(int j=1;j<=w;j++)
        {
            if(j<=e)
            {
                v[i%2][j]=c;
                if(v[i%2][j]>v[(i-1)%2][j])
                    v[i%2][j]=v[(i-1)%2][j];
            }
            else
            {
                v[i%2][j]=v[(i-1)%2][j];
                if(v[i%2][j]>v[(i-1)%2][j-e]+c)
                    v[i%2][j]=v[(i-1)%2][j-e]+c;
            }
        }
    }
    if(v[g%2][w]!=nrmare)
        printf("%d",v[g%2][w]);
    else
        printf("-1");
    return 0;
}