Cod sursa(job #3190637)

Utilizator TediCutuTudor Chitu TediCutu Data 7 ianuarie 2024 19:39:12
Problema Taramul Nicaieri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#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;
}