Cod sursa(job #2128465)

Utilizator ZanoxNonea Victor Zanox Data 11 februarie 2018 19:04:28
Problema Lapte Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;

struct triplet
{
    int x,y,i;
    float r;
}v[100];

int n,l,a[100],b[100],i,j,t,ta,tb,t1,t2;
fstream f("lapte.in",ios::in),g("lapte.out",ios::out);

int comp(triplet a,triplet b)
{
    if(a.r<=b.r) return 1;
    return 0;
}

int sim()
{
    for(i=0;i<n;i++)
    {
        ta=0;tb=0;
        for(j=0;j<i;j++)
        {
            a[v[j].i]=t/v[j].x;
            ta+=t/v[j].x;
            b[v[j].i]=t%v[j].x/v[j].y;
            tb+=t%v[j].x/v[j].y;
        }
        for(j=i+1;j<n;j++)
        {
            b[v[j].i]=t/v[j].y;
            tb+=t/v[j].y;
            a[v[j].i]=t%v[j].y/v[j].x;
            ta+=t%v[j].y/v[j].x;
        }
        if((l-ta)*(l>ta)*v[i].x+(l-tb)*(l>tb)*v[i].y<t)
        {
        a[v[i].i]=l-ta;
        b[v[i].i]=l-tb;
        return 1;
        }

    }
    return 0;
}

void output()
{
    g<<t<<'\n';
    for(j=0;j<n;j++)
    g<<a[j]<<' '<<b[j]<<'\n';
}

int main()
{
    f>>n>>l;
    for(i=0;i<n;i++)
    {
        f>>v[i].x>>v[i].y;
        v[i].i=i;
        v[i].r=v[i].x/v[i].y;
    }
    sort(v,v+n,comp);
    t1=1;t2=10000;
    while(t1!=t2)
    {
        t=t1+t2;
        t/=2;
        if(sim())t2=t;
        else t1=t+1;
    }
    t=t1;
    sim();
    output();
}