Cod sursa(job #2206261)

Utilizator patcasrarespatcas rares danut patcasrares Data 21 mai 2018 23:33:43
Problema Lapte Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<fstream>
#include<iostream>
#include<algorithm>
#define x first
#define y second
#define DN 105
using namespace std;
ifstream fin("lapte.in");
ofstream fout("lapte.out");
int n,l,nr1,nr2,t;
int b[DN];
pair<int,int>r[DN];
pair<pair<int,int>,int  >a[DN];
int main()
{
    fin>>n>>l;
    for(int i=1;i<=n;i++)
    {
        fin>>a[i].x.y>>a[i].x.x;
        a[i].y=i;
        a[i].x.x=-a[i].x.x;
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
    {
        a[i].x.x=-a[i].x.x;
        swap(a[i].x.x,a[i].x.y);
    }
    for(int h=1;h<=100;h++)
    {
        nr1=nr2=0;
        for(int i=1;i<=n;i++)
        {
            r[a[i].y].y=h/a[i].x.y;
            b[a[i].y]=h%a[i].x.y;
            nr2+=r[a[i].y].y;
        }
        if(nr2<l)
            continue;
        for(int i=1;i<=n;i++)
        {
            t=min(nr2-l,r[a[i].y].y);
            nr2-=t;
            r[a[i].y].y-=t;
            t=b[a[i].y]+t*a[i].x.y;
            r[a[i].y].x=t/a[i].x.x;
            nr1+=r[a[i].y].x;
            t=t%a[i].x.x;
            r[a[i].y].y+=t/a[i].x.y;
            nr2+=t/a[i].x.y;
        }
        if(nr1>=l)
        {
            fout<<h<<'\n';
            for(int i=1;i<=n;i++)
                fout<<r[i].x<<' '<<r[i].y<<'\n';
            return 0;
        }
    }
}