Cod sursa(job #2434354)

Utilizator AlexPop28Pop Alex-Nicolae AlexPop28 Data 1 iulie 2019 16:13:22
Problema Taramul Nicaieri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
  ifstream cin("harta.in");
  ofstream cout("harta.out");

  int n; cin >> n;
  vector<pair<int, int>> deg(n);
  int m = 0;
  for (int i = 0; i < n; ++i) {
    cin >> deg[i].first >> deg[i].second;
    m += deg[i].first;
  }
  cout << m << endl;
  vector<int> graph(n);
  iota(graph.begin(), graph.end(), 0);
  for (int i = 0; i < n; ++i) {
    sort(graph.begin(), graph.end(), [&](int a, int b) {
      return deg[a] > deg[b];
    });
    for (int j = 0; j < n && deg[i].second != 0; ++j) if (i != graph[j]) {
      assert(deg[graph[j]].first != 0);
      --deg[graph[j]].first;
      --deg[i].second;
      cout << graph[j] + 1 << ' ' << i + 1 << '\n';
    }
  }
}