Cod sursa(job #1229089)
Utilizator | Data | 16 septembrie 2014 13:06:41 | |
---|---|---|---|
Problema | Energii | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <cstdio>
using namespace std;
FILE *f=fopen("energii.in","r");
FILE *g=fopen("energii.out","w");
int n,w;
int v[15001],minim=1<<30;
int main()
{int i,j,a,b;
fscanf(f,"%d %d",&n,&w);
for (i=1;i<=15000;i++) v[i]=1<<30;
while (n!=0)
{fscanf(f,"%d %d",&a,&b);
for (i=5000;i>=0;i--) if (v[i]+b<v[i+a]) v[i+a]=v[i]+b;
n--;
}
for (i=15000;i>=w;i--) if (v[i]<minim) minim=v[i];
fprintf(g,"%d\n",minim);
return 0;
}