Pagini recente » Cod sursa (job #771603) | Cod sursa (job #466781) | Cod sursa (job #1003284) | Cod sursa (job #760608) | Cod sursa (job #585341)
Cod sursa(job #585341)
#include <iostream>
#include <fstream>
using namespace std;
long N, V[1001], G[1001], EMinim, E, C, D[1001][100000], SV, SG=1000000000;
void Citire ()
{
ifstream fin ("energii.in");
int i, v=0;
fin >> N >> EMinim;
for (i=0; i<N; i++)
{
fin >> V[i] >> G[i];
if (E<EMinim)
{
E+=V[i];
C+=G[i];
}
if ((v==0)&&(E>EMinim))
{
v=1;
E+=V[i];
C+=G[i];
}
}
fin.close ();
}
void Afisare ()
{
ofstream fout ("energii.out");
fout << SG << "\n";
fout.close ();
}
inline int Max (int a, int b)
{
if (a>b)
{
return a;
}
return b;
}
int main ()
{
int i, j;
Citire ();
if (E<EMinim)
{
SG=-1;
}
else
{
for (i=0; i<N; i++)
{
for (j=1; j<=C; j++)
{
if (j>=G[i])
{
D[i][j]=Max (D[i][j-1], D[i][j-G[i]]+V[i]);
}
else
{
D[i][j]=D[i][j-1];
}
if ((D[i][j]>=EMinim)&&(j<SG))
{
SG=j;
break;
}
}
}
}
Afisare ();
return 0;
}