Cod sursa(job #875667)

Utilizator FayedStratulat Alexandru Fayed Data 10 februarie 2013 16:46:32
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
using namespace std;

int Gmax,n,g[1001],C[1001],vizitat[5001][1001],G,Cost[1001];

int main(){

    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);

    scanf("%d%d",&n,&Gmax);
    for(int i=1;i<=n;i++)
    scanf("%d%d",&g[i],&C[i]);

         for(G=1;G<=Gmax;G++)
        for(int i=1;i<=n;i++)
            if(g[i]<=G && ! vizitat[G-g[i]][i])
                if(Cost[G] < C[i] + Cost[G-g[i]]){

                    Cost[G] = C[i] + Cost[G-g[i]];
                        for(int k=1;k<=n;k++)
                            vizitat[G][k] = vizitat[G-g[i]][k];
                            vizitat[G][i] = 1;
                }
printf("%d",Cost[Gmax]);
return 0;
}