Pagini recente » Profil Tzepu | Cod sursa (job #405963) | Cod sursa (job #1771544) | Monitorul de evaluare | Cod sursa (job #1773544)
#include<cstdio>
using namespace std;
#define MAX(a,b) (a>b?a:b)
struct g {
int val, cost;
} v[1001];
int din[5001];
int main() {
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
int n, t;
scanf("%d%d", &n, &t);
int total=0;
for(int i=1; i<=n; i++)
scanf("%d%d", &v[i].val, &v[i].cost), total+=v[i].val;
if(total < t) {
printf("-1\n");
return 0;
}
for(int i=1; i<=5000; i++) din[i] = -100000000;
for(int i=1; i<=n; i++)
for(int j=5000; j>=v[i].cost; j--)
din[j] = MAX(din[j-v[i].cost] + v[i].val, din[j]);
/*for(int i=1; i<=5000; i++)
if(din[i]>=0) printf("en: %d; cost: %d\n", din[i], i);
*/
for(int i=1; i<=5000; i++)
if(din[i]>=t) {
printf("%d\n", i);
return 0;
}
return 0;
}