Cod sursa(job #2452817)
| Utilizator | Data | 1 septembrie 2019 13:29:10 | |
|---|---|---|---|
| Problema | Energii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <fstream>
#define maxi 10011002
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct generator
{
int e;
int c;
};
generator v[1001];
int prod[20000];
int main()
{
int g, w, fin=0, minim=maxi;
in>>g>>w;
for(int i=1; i<=g; i++)in>>v[i].e>>v[i].c;
prod[0]=1;
for(int i=1; i<=g; i++)
for(int j=w; j>=0; j--)
{
fin=j+v[i].e;
if(prod[j]!=0)
{
if(prod[fin]==0 || prod[fin]>prod[j]+v[i].c)
{
prod[fin]=prod[j]+v[i].c;
if( fin>=w && prod[fin] < minim)
{
minim = prod[fin];
}
}
}
}
if(minim!=maxi)out<<(minim-1);
else out<<-1;
in.close();
out.close();
return 0;
}
