Cod sursa(job #1283631)

Utilizator otnielMercea Otniel otniel Data 5 decembrie 2014 21:30:45
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<iostream>
using namespace std;
int greu[1002],pierd[1002],castig[1001103],i,n,s=999999999,cautat,smax,j;
#include<stdio.h>
FILE *f,*g;
int main()
{
    f=fopen("energii.in","r");
    g=fopen("energii.out","w");
    fscanf(f,"%d%d",&n,&cautat);
    for(i=1;i<=n;i++)
    {
        fscanf(f,"%d%d",&greu[i],&pierd[i]);
        smax=smax+greu[i];
    }
 for(i=1;i<=smax;i++)
    castig[i]=999999999;
    for(i=1;i<=n;i++)
        {for(j=smax-greu[i];j>=0;j--)
            if(castig[j+greu[i]]>castig[j]+pierd[i])
        {
            castig[j+greu[i]]=castig[j]+pierd[i];
            if(castig[j+greu[i]]<s)
            s=castig[j+greu[i]];
        }
        }
        int maximul=999999999;
        for(i=cautat;i<=smax;i++)
            if(maximul>castig[i])
                maximul=castig[i];
      if(maximul!=999999999)
      fprintf(g,"%d",maximul);
      else
        fprintf(g,"-1");
}