Cod sursa(job #1026745)

Utilizator hevelebalazshevele balazs hevelebalazs Data 11 noiembrie 2013 22:05:25
Problema Energii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define rf(i,a,b) for(int i=b;i>=a;--i)
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
#define G 1000
#define W 5000
int e[G],c[G];
int v[W];
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int g,w,sol=-1;
    scanf("%i%i",&g,&w);
    fr(i,0,g)scanf("%i%i",e+i,c+i);
    fr(i,0,g){
        rf(j,0,w){
            if(!j||v[j]){
                if(j+e[i]>=w) sol=sol==-1?v[j]+c[i]:min(sol,v[j]+c[i]);
                else {
                    if(v[j+e[i]]==0) v[j+e[i]]=v[j]+c[i];
                    else v[j+e[i]]=min(v[j+e[i]],v[j]+c[i]);
                    }
                }
            }
        }
    printf("%i",sol);
    return 0;
    }