Pagini recente » Cod sursa (job #1305393) | Cod sursa (job #1087647) | Cod sursa (job #1203260) | Cod sursa (job #2732070) | Cod sursa (job #586787)
Cod sursa(job #586787)
#include <iostream>
#include <fstream>
using namespace std;
long N, W[1001][5001], C[1001][5001], EMinim, E, EG[1001], CG[1001], S;
void Citire ()
{
ifstream fin ("energii.in");
int i;
fin >> N >> EMinim;
for (i=0; i<N; i++)
{
fin >> EG[i] >> CG[i];
E+=EG[i];
}
fin.close ();
}
void Afisare ()
{
ofstream fout ("energii.out");
fout << S << "\n";
fout.close ();
}
inline long Max (long a, long b)
{
if (a>b)
{
return a;
}
return b;
}
int main ()
{
int i, j, EPrim;
Citire ();
if (E<EMinim)
{
S=-1;
}
else
{
for (j=1; j<=EMinim; j++)
{
W[0][j]=EG[0];
C[0][j]=CG[0];
}
for (i=1; i<N; i++)
{
for (j=1; j<=EMinim; j++)
{
EPrim=Max (j-EG[i], 1);
if (W[i-1][j]>=j)
{
if (C[i-1][j]<C[i-1][EPrim]+CG[i])
{
W[i][j]=W[i-1][j];
C[i][j]=C[i-1][j];
}
else
{
W[i][j]=W[i-1][EPrim]+EG[i];
C[i][j]=C[i-1][EPrim]+CG[i];
}
}
else
{
W[i][j]=W[i-1][j-EG[i]]+EG[i];
C[i][j]=C[i-1][j-EG[i]]+CG[i];
}
}
}
S=C[N-1][EMinim];
}
Afisare ();
return 0;
}