Pagini recente » Cod sursa (job #2105394) | Cod sursa (job #1434159) | Cod sursa (job #2736206) | Cod sursa (job #598836) | Cod sursa (job #2021236)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fi ("harta.in");
ofstream fo ("harta.out");
struct str{int in,out,nr;} oras[105];
int noras,i,sol;
bool comp(str x,str y)
{
if (x.in>y.in) return 1;
if (x.in<y.in) return 0;
if (x.out>y.out) return 1;
return 0;
}
void citire()
{
fi>>noras;
for (i=1;i<=noras;i++)
{
fi>>oras[i].out;
fi>>oras[i].in;
oras[i].nr=i;
sol+=oras[i].out;
}
}
void calc_and_afis()
{
int time=noras;
fo<<sol<<'\n';
while (time)
{
int lim=0,loc=0;
time--;lim=0;
sort(oras+1,oras+noras+1,comp);
for (i=1;i<=noras;i++)
if (oras[i].out>lim)
{
lim=oras[i].out;
loc=i;
}
for (i=1;i<=lim+1;i++)
if (i!=loc and oras[loc].out>0)
{
oras[i].in--;
oras[loc].out--;
sol++;
fo<<oras[loc].nr<<' '<<oras[i].nr<<'\n';
}
}
}
int main()
{
citire();
calc_and_afis();
return 0;
}