Cod sursa(job #3281217)

Utilizator AlexandruBenescuAlexandru Benescu AlexandruBenescu Data 28 februarie 2025 18:10:30
Problema Taramul Nicaieri Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
#define L 105
using namespace std;
ifstream fin("harta.in");
ofstream fout("harta.out");

struct MS {
  int node, in, out;
};

int n, s;
MS v[L];

bool cmp(const MS &a, const MS &b) {
  return a.in > b.in;
}

int increment(int i) {
  i++;
  if (i > n)
    i = 1;
  return i;
}

int main() {
  fin >> n;
  for (int i = 1; i <= n; i++) {
    fin >> v[i].in >> v[i].out;
    v[i].node = i;
    s += v[i].in;
  }

  fout << s << "\n";

  sort(v + 1, v + n + 1, cmp);
  for (int i = 1; i <= n; i++) {
    int j = 1;
    while (v[i].in) {
      while (v[j].out == 0 || i == j)
        j = increment(j);
      v[i].in--;
      v[j].out--;
      fout << v[i].node << " " << v[j].node << "\n";
      j = increment(j);
    }
  }
  return 0;
}