Pagini recente » Cod sursa (job #337000) | Cod sursa (job #1592496) | Cod sursa (job #35020) | Cod sursa (job #636659) | Cod sursa (job #3281215)
#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);
int j = 1;
for (int i = 1; i <= n; i++) {
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;
}