Cod sursa(job #1344184)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 16 februarie 2015 15:05:31
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
int s[15010];
struct date{int e,c;};
date v[1010];
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int i,j,n,m,min=10001*1001,max=-1;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        scanf("%d%d",&v[i].e,&v[i].c);
        if(v[i].e>max)
                max=v[i].e;
    }
    for(i=1;i<=n;i++){
        for(j=m;j>=1;j--){
            if(s[j]!=0){
                if(s[j+v[i].e]==0||s[j+v[i].e]>s[j]+v[i].c)
                    s[j+v[i].e]=s[j]+v[i].c;
                if(j+v[i].e>=m&&s[j+v[i].e]<min)
                    min=s[j+v[i].e];
            }
        }
            if(s[v[i].e]==0||s[v[i].e]>v[i].c)
                s[v[i].e]=v[i].c;
            if(v[i].e>=m&&s[v[i].e]<min)
                min=s[v[i].e];
    }
    if(min==10001*1001)
        printf("-1");
    else
        printf("%d",min);
return 0;
}