Pagini recente » Cod sursa (job #1947759) | Cod sursa (job #2956924) | Cod sursa (job #2064804) | Cod sursa (job #473117) | Cod sursa (job #403788)
Cod sursa(job #403788)
#include <cstdio>
#include <cstdlib>
int cost[15000];
short gen[1010][2];
int main(){
FILE* fin=fopen("energii.in","r");
int g,w;
fscanf(fin,"%u %u",&g,&w);
for(int i=0;i<g;i++){
fscanf(fin,"%hu %hu",&gen[i][0],&gen[i][1]);
}
for(int i=0;i<w;i++){
cost[i]=1000000;
}
for(int i=0;i<g;i++){
for(int j=w;j>0;j--){
if(cost[j]!=1000000){
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][0]]>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]]>gen[i][1]){
cost[gen[i][0]]=gen[i][1];
}
}
}
for(int i=1;i<w;i++){
printf("%u ",cost[i]);
}
if(cost[w]=1000000){
printf("-1");
}else{
printf("%u",cost[w]);
}
}