Cod sursa(job #261151)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 17 februarie 2009 21:46:11
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<algorithm>
#define INF 1000001
using namespace std;
int g,w,cmin[5001],uz[5001][1001];
struct gigel{
    int e,c;};
gigel a[1001];
void solve(){
    int i,j,k;
    scanf("%d%d",&g,&w);
    for(i=1; i<=g; ++i)
        scanf("%d%d",&a[i].e,&a[i].c);
    for(i=1; i<=w; ++i)
        cmin[i]=INF;
    for(i=1; i<=w; ++i)
        for(j=1; j<=g; ++j)
            if(a[j].e<=i&&cmin[i-a[j].e]!=-1&&!uz[i-a[j].e][j])
                if(a[j].c+cmin[i-a[j].e]<cmin[i]){
                    cmin[i]=a[j].c+cmin[i-a[j].e];
                    for(k=1; k<=g; ++k)
                        uz[i][k]=uz[i-a[j].e][k];
                    uz[i][j]=1;}
    printf("%d",cmin[w]);}
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    solve();
    return 0;}