Pagini recente » Cod sursa (job #1593569) | Cod sursa (job #2169146) | Profil mihaipriboi | Cod sursa (job #127364) | Cod sursa (job #698968)
Cod sursa(job #698968)
#include<cstdio>
using namespace std;
short eprod[1001];
short cost[1001];
long costptprod[5001]; //acest sir retine pe pozitia i, costul pentru a obtine aceasta energie
int main()
{
long n,i,w,j;
long minim=-1;
FILE* f;
f=fopen("energii.in","r");
fscanf(f,"%ld\n%ld",&n,&w);
for(i=0;i<n;i++)
fscanf(f,"%hd %hd\n",&eprod[i],&cost[i]);
fclose(f);
for(i=1;i<=w;i++)
costptprod[i]=-1;
costptprod[0]=0; //nu costa nimic pentru a produce 0 energie
for(i=0;i<n;i++)
{
for(j=w;j>=0;j--)
if(costptprod[j]!=-1) //daca costptprod[j]==-1, atunci inseamna ca nu exista nicio cale de a obtine aceasta cantitate de energie
{ //folosind primele (i-1) generatoare
if(j+eprod[i]>=w)
{
if((minim>(costptprod[j]+cost[i]))||(minim==-1))
minim=costptprod[j]+cost[i];
}
if(j+eprod[i]<=w)
if((costptprod[j+eprod[i]]>costptprod[j]+cost[i])||(costptprod[i]==-1))
costptprod[j+eprod[i]]=costptprod[j]+cost[i];
}
}
FILE* g;
g=fopen("energii.out","w");
fprintf(g,"%ld",minim);
fclose(g);
return 0;
}