Pagini recente » Cod sursa (job #285175) | Cod sursa (job #1255024) | Cod sursa (job #2046769) | Cod sursa (job #355604) | Cod sursa (job #159196)
Cod sursa(job #159196)
#include<stdio.h>
#include<stdlib.h>
long int g,w,i,s,cost,ok;
struct interval {int a,b;};
int compar(const void*p, const void*q)
{
interval *pp=(interval*)p, *qq=(interval*)q;
interval x=*pp,y=*qq;
if (x.b>y.b) return 1;
else
if (x.b==y.b && x.a<y.a) return 1;
if (x.a<y.a) return -1;
return 0;
}
int main()
{
interval v[5001];
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%ld%ld",&g,&w);
for (i=0; i<g; i++) scanf("%ld%ld",&v[i].a,&v[i].b);
qsort(v,g,sizeof(v[0]),compar);
s=0; cost=0; ok=0;
for (i=0; i<g; i++)
{
if ((s>=w)&&(cost<=v[i].b))
{
ok=1;
printf("%ld",cost);
}
else
if (v[i].a>=w)
{
ok=1;
printf("%ld",v[i].b);
}
if (ok==1) break;
else
{s=s+v[i].a;
cost=cost+v[i].b;}
}
if (ok==0)
printf("-1");
}