Pagini recente » Cod sursa (job #2728299) | Cod sursa (job #1495283) | Cod sursa (job #2291563) | Cod sursa (job #848053) | Cod sursa (job #3190637)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("harta.in");
ofstream out ("harta.out");
///practic le sortez dupa cate intra in ele si apoi calculez dupa cate ies din ele si fac repetitiv pana le termin
struct str{int intra,ies,nr;} oras[105];
int nrOrase,i,sol;
bool comp(str x,str y)///le sortez
{
if (x.intra>y.intra) return 1;
if (x.intra<y.intra) return 0;
if (x.ies>y.ies) return 1;
return 0;
}
void calculeaza()
{
int aux=nrOrase;
out<<sol<<'\n';
while (aux)
{
int lim=0,loc=0;
aux--;
sort(oras+1,oras+nrOrase+1,comp);
for (i=1;i<=nrOrase;i++)
if (oras[i].ies>lim)
{
lim=oras[i].ies;
loc=i;
}
for (i=1;i<=lim+1;i++)
if (i!=loc and oras[loc].ies>0)
{
oras[i].intra--;
oras[loc].ies--;
sol++;
out<<oras[loc].nr<<' '<<oras[i].nr<<'\n';
}
}
}
int main()
{
in>>nrOrase;
for (i=1;i<=nrOrase;i++)
{
in>>oras[i].ies;
in>>oras[i].intra;
oras[i].nr=i;
sol+=oras[i].ies;
}
calculeaza();
return 0;
}