Cod sursa(job #873109)

Utilizator miha88Popescu Mihaela miha88 Data 6 februarie 2013 21:21:04
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int i,j,gn,w,a[1004][4],ct[2004],en[2004],min1,s;
int main()
{
    f>>gn>>w;
    min1=10002;
    for (i=1;i<=gn;i++)
        for(j=1;j<=2;j++)
        {
            f>>a[i][j];
            s+=a[i][1];
        }
    if(s<w)
    g<<-1;
    for(i=1;i<=gn;i++)
        {
            for(j=w;j>=1;j--)
                if(en[j]!=0)
                    {
                       en[j+a[i][1]]=1;
                      if( ct[ j+a[i][1] ]!=0 )
                      {
                        if( ct[ j+a[i][1] ] > ct[j]+a[i][2] )
                            ct[ j+a[i][1] ] = ct[j]+a[i][2];
                      }
                      else
                        ct[ j+a[i][1] ] = ct[j]+a[i][2];
                      if(j+a[i][1]>=w)
                        if(min1>ct[j+a[i][1]] )
                            min1=ct[j+a[i][1]];
                    }
             if(en[a[i][1]]!=0 )
                {
                    if(ct[a[i][1]] > a[i][2] )
                       ct[a[i][1]] = a[i][2];
                    if( a[i][1]>=w )
                        if(min1>ct[a[i][1]] )
                            min1=ct[a[i][1]];
                }
             else
                {
                    en[a[i][1]]=1;
                    ct[a[i][1]]=a[i][2];
                    if( a[i][1]>=w)
                        if(min1>ct[a[i][1]])
                            min1=ct[a[i][1]];
                }
        }
    g<<min1;
    return 0;
}