Cod sursa(job #2012063)

Utilizator DragosArseneDragos Arsene DragosArsene Data 17 august 2017 19:40:27
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <stdio.h>
using namespace std;
struct e{int energ, cost;};
e v[1001];
int m[1001][1001];
int main() {
    FILE *fin, *fout;
    int i, j, g, w;

fin = fopen("energii.in", "r");
fout = fopen("energii.out", "w");

fscanf(fin,"%d%d", &g, &w);
for(i=1;i<=g;i++){
fscanf(fin,"%d%d", &v[i].energ, &v[i].cost);
}
for(i=1;i<=g;i++){
m[i][w+1]=v[i].energ;
m[i][0]=0;
}
for(i=1;i<=w;i++){
m[1][i]=i;
}
for(i=1;i<=g;i++){
for(j=0;j<=w;j++){
if(v[i].energ>j)
m[i][j]=m[i][j-1];
else
m[i][j] = max(m[i-1][j], m[i-1][j-v[i].energ] + v[i].cost);

}
}


if(m[g][w]>0)
fprintf(fout,"%d", m[g][w]);
else
fprintf(fout,"-1");
fclose(fin);
fclose(fout);

    return 0;
}