Cod sursa(job #2670201)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 9 noiembrie 2020 13:40:20
Problema Energii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#define mMax 5120

using namespace std;

int v[mMax];

int min(int x,int y) {
    return y+(x<y)*(x-y);
}

void solve() {
    int i,j,n,m,x,suf,price;
    scanf("%d%d",&n,&m);
    for(j=1,v[0]=0;j<=m;++j) {
        v[j]=-1;
    }
    for(i=0;i<n;++i) {
        scanf("%d%d",&suf,&price);
        for(j=m;j>0;--j) {
            x=j-suf;
            if(x<0) {
                v[j]=price;
            }
            else if(v[x]==-1) {
                v[j]=-1;
            }
            else {
                if(v[j]>=0) {
                    v[j]=min(v[x]+price,v[j]);
                }
                else {
                    v[j]=v[x]+price;
                }
            }
        }
    }
    printf("%d",v[m]);
}

int main() {
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    solve();
    return 0;
}