Pagini recente » Cod sursa (job #145733) | Cod sursa (job #708153) | Cod sursa (job #2185553) | Cod sursa (job #1042072) | Cod sursa (job #2284999)
#include <iostream>
#include <fstream>
#include <math.h>
#include <algorithm>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
struct generator
{
int e,c;
};
generator G[1002];
int n,w,rezc,reze;
bool comp(generator a,generator b)
{
return (double(a.e)/a.c)>(double(b.e)/b.c);
}
int main()
{
f>>n>>w;
for(int i=1;i<=n;i++)
f>>G[i].e>>G[i].c;
f.close();
sort(G+1,G+n+1,comp);
for(int i=1;i<=n;i++)
cout<<G[i].e<<' '<<G[i].c<<endl;
int i=1,j=1;
reze=G[1].e;
rezc=G[1].c;
int sol=INT_MAX;
while(reze!=w && j<=n)
{
if(reze<w)
{
j++;
reze+=G[j].e;
rezc+=G[j].c;
}
else
{
if(rezc<sol)
sol=rezc;
reze-=G[i].e;
rezc-=G[i].c;
i++;
if(i>j)
{
j++;
reze=G[j].e;
rezc=G[j].c;
}
}
}
if(reze==w)
sol=rezc;
g<<(sol==INT_MAX? -1 : sol);
return 0;
}