Cod sursa(job #1107647)

Utilizator span7aRazvan span7a Data 14 februarie 2014 00:37:52
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct cen
{
	int E;
	int C;
};
cen L[10001];
int Cost,ok,s,i,W,G,costmin,Wramas;
bool cmp(cen x,cen y)
{
	return x.C*y.E>x.E*y.C;
}
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d",&G);
    scanf("%d",&W);
    for(i=1;i<=G;i++)
    {
        scanf("%d",&L[i].E);
        s=s+L[i].E;
        scanf("%d",&L[i].C);
    }
    for(i=1;i<=G;i++)
        if(L[i].E>=W)
            costmin=L[i].C;
    
    /*do
    {
        ok=1;
        for(i=1;i<G;i++)
            if(C[i]>C[i+1]&&E[i]<E[i+1])
                {swap(C[i],C[i+1]);
                swap(E[i],E[i+1]);ok=0;
                }
    }while(ok==0);
     */    //sortareaaaa
	sort(L+1,L+G+1,cmp);
      i=G;
	Wramas=W;
     
    if(s>=W)
    {
        while(i>=1&&Wramas!=0)
		{   if(L[i].E<=Wramas)
			{
            Wramas=Wramas-L[i].E;
            Cost=Cost+L[i].C;
            i++;
			}
			else
				if(L[i].C>=Cost)
				{   Cost=L[i].C;
					Wramas=0;
				}
		}
	
    printf("%d",Cost);
    }
    else
        printf("-1");
     
     
     
    return 0;
}