Cod sursa(job #1908359)

Utilizator raluca1234Tudor Raluca raluca1234 Data 7 martie 2017 01:02:36
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <cstring>

#define maxW 5001
#define INF 1e9

using namespace std;

int d[maxW+5];

inline int min(int a, int b){ return (a<b ? a:b);}

int main(){
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    int G, W, EG, CG, dr, ans;
    scanf("%d%d", &G, &W);

    memset(d, 0xff, sizeof(d));
    d[0]=0;
    dr=0;
    ans=INF;
    for (int i=1; i<=G; i++){
        scanf("%d%d", &EG, &CG);
        for (int j=dr; j>=0; j--)
            if (d[j]!=-1){
                if (j+EG>=W){
                    dr=W;
                    ans=min(ans, d[j]+CG);
                }else{
                    if (dr<j+EG) dr=j+EG;
                    d[j+EG]=min(d[j+EG], d[j]+CG);
                }
            }
    }
    if (ans==INF)
        printf("-1\n");
    else printf("%d\n", ans);
    return 0;
}