Cod sursa(job #150666)
Utilizator | Data | 7 martie 2008 11:04:43 | |
---|---|---|---|
Problema | Energii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include <stdio.h>
#define INF 200000000
int main(){
int x,y,i,n,w,a[7005],max,m,j;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d",&n,&w);
for(i=1;i<=w;i++)
a[i]=INF;
m=INF;
for(i=1;i<=n;i++){
scanf("%d%d",&x,&y);
if(x>=w) {
if(y<m) m=y; }
else {
for(j=w-x;j<=w;j++)
if(a[j]+y<m) m=a[j]+y;
for(j=w-x;j>=0;j--)
if(a[j]+y<a[j+x]) a[j+x]=a[j]+y;
}
}
if (m!=INF) printf("%d",m);
else printf("-1");
}