Pagini recente » Cod sursa (job #495848) | Cod sursa (job #1018856) | Cod sursa (job #391164) | Cod sursa (job #1163463) | Cod sursa (job #262444)
Cod sursa(job #262444)
#include <stdio.h>
#include <stdlib.h>
struct generator
{
int energie,cost;
};
generator v[1005];
int g,w,economie_distrusa;
void read()
{
int i;
scanf("%d%d",&g,&w);
for (i=1; i<=g; i++)
scanf("%d%d",&v[i].energie,&v[i].cost);
}
int compare(const void *p,const void *q)
{
generator x=*(generator*)p,y=*(generator*)q;
if (x.cost<y.cost)
return -1;
if (x.cost>y.cost)
return 1;
if (x.energie<y.energie)
return -1;
if (x.energie>y.energie)
return 1;
return 0;
}
void sort()
{
qsort(v+1,g,sizeof(v[0]),compare);
}
void verif()
{
int i,s=0;
for (i=1; i<=g; i++)
s+=v[i].energie;
if (s<w)
{
printf("-1");
economie_distrusa=1;
}
}
void solve()
{
int costmin,costact,r,i;
costmin=1000000;
for (i=g; i>=1; i--)
if (v[i].energie<=w)
{
r=1;
costact=v[i].cost;
//printf("%d ",costact);
while (costact<w)
{
costact+=v[r].energie;
r++;
if (r==i)
break;
}
if (costact<costmin && costact>=w)
costmin=costact;
}
printf("%d",costmin);
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
read();
sort();
verif();
//afisare();
if (economie_distrusa==0)
solve();
return 0;
}