Cod sursa(job #1482868)
| Utilizator | Data | 8 septembrie 2015 10:46:24 | |
|---|---|---|---|
| Problema | Energii | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
//
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int e[2000],c[2000];
int g[1000000];
int n;
int main()
{ int i,j,w,s=0,m=0;
in>>n;
in>>w;
for(i=1;i<=n;i++)
{in>>e[i]>>c[i];
s=s+e[i];
m += c [ i ] ;
}
if(s<w)out<<-1;
else
{for(i=1;i<=n;i++){
for(j=w;j>=0;j--)
g[j+c[i]]=max(g[j+c[i]], g[j]+e[i]);
}
for(i=0;i<=m;i++)
if(g[i]>=w){
out<<i;
break;
}}
return 0;
}
