Cod sursa(job #2165392)
| Utilizator | Data | 13 martie 2018 12:04:01 | |
|---|---|---|---|
| Problema | Energii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n,w,i,j,k,t,b[2001],a[50000][50000];
int main()
{ f>>n>>w; k=-1;
for(i=1;i<=n;i++){ f>>b[2*i-1]>>b[2*i];
t=t+b[2*i];
}
for(j=1;j<=t;j++)
{a[1][j]=0;
for(i=2;i<=n+1;i++)
{
if(b[2*i-2]>j) a[i][j]=a[i-1][j];
else a[i][j]=max(b[2*i-3]+a[i-1][j-b[2*i-2]],a[i-1][j]);
} if(a[n+1][j]>=w)
{k=j; j=t+1;
}
}
g<<k;
return 0;
}
