Cod sursa(job #628677)

Utilizator cosminvdpruna stefan cosminvd Data 1 noiembrie 2011 21:01:47
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
using namespace std;
long v[10001],C[1001],E[1001];
int main()
{
    int x,y,i,j;
    long sum=0;
    ifstream f("energii.in");
    ofstream g("energii.out");
    f>>x>>y;
    for(i=1;i<=x;i++)
    {
	f>>E[i];
	f>>C[i];
	sum+=E[i];
    }
    for(i=1;i<=10000;i++)
     v[i]=-1;
    f.close();
    if(sum<y) 
	{
		g<<-1; 
	return 0;
	}
    for(i=1;i<=x;i++)
       for(j=y;j>=0;j--)
	   if((v[j]!=-1 ||j==0)&& v[j+E[i]]==-1)
	   {
	    if(j==0) v[j+E[i]]+=1;
	      v[j+E[i]]=C[i]+v[j];
	   }
	   else
	     if((v[j]!=-1 ||j==0)&& v[j+E[i]]!=-1 && v[j+E[i]]>C[i]+v[j])
	     {
	      if(j==0) v[j+E[i]]+=1;
		v[j+E[i]]=C[i]+v[j];
	     }
    long minim;
    i=y;
    while(v[i]==-1) i++;
    minim=v[i];
    for(j=i+1;j<10001;j++)
     if(v[j]<minim&&v[j]!=-1)
       minim=v[j];
    g<<minim;
    return 0; 
}