Cod sursa(job #1925595)

Utilizator andreigasparoviciAndrei Gasparovici andreigasparovici Data 13 martie 2017 14:12:34
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<cstdio>
int G,w;int suma;struct obiect{int p,c;}ob[5010];int a[1010][5010];int main(){freopen("energii.in","r",stdin);freopen("energii.out","w",stdout);scanf("%d%d",&G,&w);for(int i=1;i<=G;i++){scanf("%d%d",&ob[i].p,&ob[i].c);suma+=ob[i].p;}if(suma<w){puts("-1");}else{for(int i=0;i<=G;i++)for(int j=0;j<=w;j++)a[i][j]=0x3f3f3f3f;for(int i=1;i<=G;i++){for(int j=0;j<=w;j++){if(j<=ob[i].p)a[i][j]=(a[i-1][j]<ob[i].c)?a[i-1][j]:ob[i].c;if(j>ob[i].p)a[i][j]=(a[i-1][j]<a[i-1][j-ob[i].p]+ob[i].c)?a[i-1][j]:a[i-1][j-ob[i].p]+ob[i].c;}}printf("%d\n",a[G][w]);}return 0;}