Cod sursa(job #2670203)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 9 noiembrie 2020 13:49:36
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#define mMax 5120
#define pa 1<<30

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,var1,var2;
    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) {
                var1=price;
            }
            else if(v[x]==-1) {
                v[j]=-1;
                continue;
            }
            else {
                var1=v[x]+price;
            }
            if(v[j]>=0) {
                var2=v[j];
            }
            else {
                var2=pa;
            }
            v[j]=min(var1,var2);
        }
    }
    printf("%d",v[m]);
}

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