Cod sursa(job #1373714)

Utilizator madalomarMadalomar madalomar Data 4 martie 2015 20:15:18
Problema Garaj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#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;
}