Pagini recente » Cod sursa (job #3121970) | Cod sursa (job #1725253) | Cod sursa (job #1429297) | Cod sursa (job #1233647) | Cod sursa (job #239806)
Cod sursa(job #239806)
#include<algorithm>
using namespace std;
int g,w,a[1001],b[1001];
int divide(int p,int q){
int st=p,dr=q,x=b[p],y=a[p];
while(st<dr){
while(st<dr&&(double)b[dr]/a[dr]>=(double)x/y)
--dr;
a[st]=a[dr];
b[st]=b[dr];
while(st<dr&&(double)b[st]/a[st]<=(double)x/y)
++st;
a[dr]=a[st];
b[dr]=b[st];
b[st]=x;
a[st]=y;}
return st;}
void qsort(int p,int q){
int m;
m=divide(p,q);
if(m-1>p)
qsort(p,m-1);
if(m+1<q)
qsort(m+1,q);}
void solve(){
int i,e=0,c=0;
scanf("%d%d",&g,&w);
for(i=1; i<=g; ++i)
scanf("%d%d",&a[i],&b[i]);
qsort(1,g);
for(i=1; i<=g&&e<w; e+=a[i],c+=b[i],++i);
if(e>=w)
printf("%d",c);
else
printf("-1");}
int main(){
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
solve();
return 0;}