Cod sursa(job #1265337)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 17 noiembrie 2014 09:11:50
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
using namespace std;
struct gen{int e,c;};
gen v[1001];
int s[15001];
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,emin,i,max=-1,j,min=1000000,maxe=-1;
    scanf("%d%d",&n,&emin);
    for(i=1;i<=n;i++){
        scanf("%d%d",&v[i].e,&v[i].c);
        if(v[i].e>maxe)
            maxe=v[i].e;
    }
    for(i=1;i<=n;i++)
        for(j=emin+maxe;j>=0;j--)
            if(s[j]!=0||j==0)
                if((s[j+v[i].e]==0||s[j]+v[i].c<s[j+v[i].e])&&j+v[i].e<=15000){
                    s[j+v[i].e]=s[j]+v[i].c;
                    if(max<j+v[i].e)
                        max=j+v[i].e;
                }
    for(i=emin;i<=max;i++)
        if(s[i]<=min&&s[i]!=0)
            min=s[i];
    if(min==1000000)
        printf("-1");
    else
        printf("%d",min);
    return 0;
}