Cod sursa(job #849206)
| Utilizator | Data | 6 ianuarie 2013 18:28:11 | |
|---|---|---|---|
| Problema | Energii | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <fstream>
using namespace std;
#define Maxi 100000000
ifstream f("energii.in");
ofstream g("energii.out");
int eg[1003],cg[1003],i,j,Gn,W,cost[100003],s;
int main()
{
f>>Gn>>W;
for (i=1; i<=Gn; i++){f>>eg[i]>>cg[i];s+=eg[i];}
for (i=1; i<=W+5003; i++) cost[i]=Maxi;
cost[0]=0;
for(i=1; i<=Gn; i++)
for (j=W+5000; j>=eg[i]; j--)
if(cost[j]>cost[j-eg[i]]+cg[i])cost[j]=cost[j-eg[i]]+cg[i];
while(cost[W]==Maxi)W++;
if(W>s)g<<-1<<'\n';
else g<<cost[W]<<'\n';
return 0;
}
