Pagini recente » Cod sursa (job #1187852) | Cod sursa (job #2757537) | Cod sursa (job #1188205) | Cod sursa (job #1318912) | Cod sursa (job #717066)
Cod sursa(job #717066)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("lapte.in");
ofstream g ("lapte.out");
struct Lapte
{
int a,b,ab,repauz;
int baut1,baut2;
}pers[101];
int n,i,j,L,ind[101],timp,bauta,bautb;
bool sortfunction(int i, int j) {return pers[i].ab>pers[j].ab;}
void citire()
{
f>>n>>L;
for(i=0;i<n;i++)
{
f>>pers[i].a>>pers[i].b;
pers[i].ab=pers[i].a-pers[i].b;
ind[i]=i;
}
f.close();
}
void rezolva()
{
timp=bauta=bautb=0;
while(bauta<L && bautb<L)
{
timp++;
for(i=0;i<n/2;i++)
{
if(pers[ind[i]].repauz==0)
{
pers[ind[i]].baut2++;
bautb++;
pers[ind[i]].repauz=pers[ind[i]].b;
}
if(pers[ind[n-i-1]].repauz==0)
{
pers[ind[n-i-1]].baut1++;
bauta++;
pers[ind[n-i-1]].repauz=pers[ind[n-i-1]].a;
}
pers[ind[i]].repauz--;
pers[ind[n-i-1]].repauz--;
}
if(pers[ind[n/2]].ab>0)
{
if(pers[ind[n/2]].repauz==0) pers[ind[n/2]].baut2++,bautb++,pers[ind[n/2]].repauz=pers[ind[n/2]].b;
pers[ind[n/2]].repauz--;
}
else
{
if(pers[ind[n/2]].repauz==0) pers[ind[n/2]].baut1++,bauta++,pers[ind[n/2]].repauz=pers[ind[n/2]].a;
pers[ind[n/2]].repauz--;
}
}
if(bauta<L)
{
while(bauta<L)
{
timp++;
for(i=0;i<n;i++)
{
if(pers[i].repauz==0)
{
pers[i].baut1++;
bauta++;
pers[i].repauz=pers[i].a;
}
pers[i].repauz--;
}
}
}
else if (bautb<L)
{
while(bautb<L)
{
timp++;
for(i=0;i<n;i++)
{
if(pers[i].repauz==0)
{
pers[i].baut2++;
bautb++;
pers[i].repauz=pers[i].b;
}
pers[i].repauz--;
}
}
}
}
int main()
{
citire();
sort(ind,ind+n,sortfunction);
rezolva();
g<<timp<<"\n";
for(i=0;i<n;i++)
g<<pers[i].baut1<<" "<<pers[i].baut2<<"\n";
g.close();
return 0;
}