Pagini recente » Cod sursa (job #1283816) | Cod sursa (job #2496961) | Cod sursa (job #47943) | Cod sursa (job #2283899) | Cod sursa (job #336990)
Cod sursa(job #336990)
#include<cstdio>
#include<vector>
using namespace std;
#define IN "energii.in","r",stdin
#define OUT "energii.out","w",stdout
#define PII pair<int,int>
#define w first
#define c second
#define INF 999999999
int M[1020][10010];
int g , w ;
PII V[1020];
int main()
{
freopen(IN);
freopen(OUT);
scanf("%d%d",&g,&w);
for(int i = 1; i <= g ; ++i) scanf("%d%d",&V[i].w,&V[i].c);
//initializare:
M[0][0] = 0;
for(int i = 1 ; i <= 10000 ; ++i)
M[0][i] = INF;
//prog. dinamica:
for(int i = 1 ; i <= g ; ++i)
{
M[i][0] = 0;
for(int j = 1 ; j <= 10000 ; ++j)
{
M[i][j] = M[i-1][j];
if (j >= V[i].w && M[i - 1][j - V[i].w] + V[i].c < M[i][j])
M[i][j] = M[i - 1][j - V[i].w] + V[i].c;
}
}
int enmin = M[g][w];
for(int i = w + 1 ; i <= 10000 ; ++i)
if(M[g][i] < enmin) enmin= M[g][i];
if(enmin == INF )
{
printf("-1\n");
return 0;
}
printf("%d\n",enmin);
return 0;
}