Pagini recente » Cod sursa (job #382428) | Cod sursa (job #2719919) | Cod sursa (job #16518) | Cod sursa (job #337235) | Cod sursa (job #2180)
Cod sursa(job #2180)
#include <fstream>
#define Nmax 5005
#define MAX 999999999
using namespace std;
ofstream fout("energii.out");
/*
void show(int V[], int W, int min, int max)
{int i;
for(i=0; i<=W+10; i++)
fout<<V[i]<<" ";
fout<<" *** "<<min<<" *** "<<max<<'\n';
}
*/
int main(void)
{int V[Nmax]={0}, n, C[Nmax], W, E[Nmax];
ifstream fin("energii.in");
fin>>n>>W;
int i;
for(i=1;i<=n; i++)
fin>>E[i]>>C[i];
fin.close();
V[0]=1;
int min=MAX, max=0, k, m;
int j;
for(i = 1; i <= n; ++i)
{
for(j = max; j >= 0; --j)
if(V[j]) {
k = E[i] + j;
if(!j)
m = 0;
else
m = V[j];
if(k > W) {
if(m + C[i] < min)
min = m + C[i];
}
else if (!V[k])
V[k] = m + C[i];
else if (m + C[i] < V[k])
V[k] = m + C[i];
}
max += E[i];
if (max > W)
max = W;
}
if(min == MAX && V[W] == 0) {
fout<<"-1\n";
fout.close();
return 0;
}
fout<<min<<'\n';
fout.close();
return 0;
}