Pagini recente » Cod sursa (job #774856) | Cod sursa (job #1242022) | Cod sursa (job #1702356) | Cod sursa (job #1351353) | Cod sursa (job #1373714)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
int n,m,nr,t,s,b,c,d,viz[100001],i;
struct virgula{
int x,y,z;
}v[100001];
int cmp(virgula o, virgula p)
{
if(o.y==p.y)
return (o.x<p.x);
return o.y<p.y;
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>v[i].x>>v[i].y;
v[i].z=i;
v[i].y*=2;
}
sort(v+1,v+n+1,cmp);
while(1)
{
s+=v[1].x;
t+=v[1].y;
if(s>m)
break;
viz[v[1].z]=1;
if(t>=v[2].y)
{
s+=v[2].x;
v[2].y*=2;
viz[v[2].z]=1;
if(s>m)
break;
i=2;
while(v[i].y>v[i+1].y)
{
b=v[i+1].y;
c=v[i+1].x;
d=v[i+1].z;
v[i+1].y=v[i].y;
v[i+1].x=v[i].x;
v[i+1].z=v[i].z;
v[i].x=c;
v[i].y=b;
v[i].z=d;
}
}
}
fout<<t<<' ';
for(i=1;i<=n;i++)
if(viz[i]==1)
nr++;
fout<<nr;
return 0;
}