Mai intai trebuie sa te autentifici.
Cod sursa(job #3969)
Utilizator | Data | 29 decembrie 2006 20:42:48 | |
---|---|---|---|
Problema | Energii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.65 kb |
#include<fstream.h>
#include<values.h>
int gt[1005]={-1},ct[1005]={0},g[1005],c[1005],i,j,n,w,min,max,maxt;
int main()
{
ifstream f("energii.in");
ofstream fout("energii.out");
f>>n;
f>>w;
maxt=w;
for(i=1;i<=n;i++)
{f>>g[i]; f>>c[i];}
max=0;
for(i=1;i<=n;i++)
{for(j=max;j>=0;j--)
if(gt[j]!=0&&(ct[j+g[i]]>ct[j]+c[i]||ct[j+g[i]]==0))
{gt[j+g[i]]=1;
ct[j+g[i]]=ct[j]+c[i];
if(j+g[i]>max) max=j+g[i];}
if(max>w) {if(maxt<max) max=maxt;
max=w;}
}
min=MAXINT;
for(i=w;i<=maxt;i++)
if(min>ct[i]&&ct[i]!=0) min=ct[i];
fout<<min;
f.close();
fout.close();
return 0;
}