Pagini recente » Cod sursa (job #2509077) | Cod sursa (job #1325979) | Cod sursa (job #2019456) | Cod sursa (job #1009618) | Cod sursa (job #403967)
Cod sursa(job #403967)
#include <cstdio>
int cost[5001],gen[1001][2],g,w;
const int none=5000000;
int main(){
FILE* fin=fopen("energii.in","r");
freopen("energii.out","wt",stdout);
fscanf(fin,"%d %d",&g,&w);
for(int i=0;i<g;i++){
fscanf(fin,"%d %d",&gen[i][0],&gen[i][1]);
}
for(int i=0;i<=w;i++){
cost[i]=none;
}
for(int i=0;i<g;i++){
for(int j=w;j>=0;j--){
if(cost[j]!=none){
if(j+gen[i][0]>=w){
if(cost[j]+gen[i][1]<cost[w]){
cost[w]=cost[j]+gen[i][1];
}
}else if(cost[j]+gen[i][1]<cost[j+gen[i][1]]){
cost[j+gen[i][0]]=cost[j]+gen[i][1];
}
}
}
if(gen[i][0]>=w){
if(gen[i][1]<cost[w]){
cost[w]=gen[i][1];
}
}else if(cost[gen[i][0]]>cost[i]){
cost[gen[i][0]]=cost[i];
}
}
printf("%d\n",(cost[w]==none)?-1:cost[w]);
return 0;
}