Cod sursa(job #132156)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 5 februarie 2008 11:22:59
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb

#include <fstream.h>

ifstream fin ("energii.in");
ofstream fout("energii.out");

long a[10010],sir[1000001],cost[1000010],n,K,c[10010];

void citire()
{
  fin>>n>>K;
  for (int i=0;i<n;i++)
     fin>>a[i]>>c[i];
  fin.close();
}

long min (long a,long b)
{
    return a<b?a:b;
}

void gen()
{
   sir[0]=1;
   for (int i=0;i<n;i++)
     for (int j=K;j>=0;j--)
	if (sir[j]==1)
	 {
	   int pp=1;
		 sir[j+pp*a[i]]=1;
		 if (cost[j+pp*a[i]]!=0)
		 cost[j+pp*a[i]]=min(cost[j]+pp*c[i],cost[j+pp*a[i]]);
		 else
		   cost[j+pp*a[i]]=cost[j]+pp*c[i];
		 pp++;
	}
   long min=1000500000;
   for (int p=K;p<K+11000;p++)
      if (sir[p]==1&& cost[p]<min)
	 min=cost[p];
      if (min==1000500000)
	 fout<<"-1\n";
      else
   fout<<min<<"\n";
}

int main ()
{
   citire();
   gen();
   fout.close();
   return 0;
}