Cod sursa(job #3304558)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 24 iulie 2025 22:24:56
Problema Taramul Nicaieri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

#define ST_DIO 0
#if ST_DIO
    #define fin cin
    #define fout cout
#else
    ifstream fin("harta.in");
    ofstream fout("harta.out");
#endif  // ST_DIO

struct Nod {
    int in, out;
} gr[102];
int n, i, j, nr, ord[102];

static inline bool Cmp(int a, int b) {
    return gr[a].in > gr[b].in || (gr[a].in == gr[b].in && gr[a].out > gr[b].out);
}

int main() {
    if(ST_DIO) ios_base::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);

    fin >> n;
    for(i = 1; i <= n; i++) fin >> gr[i].in >> gr[i].out;

    for(i = 1; i <= n; i++) nr += gr[i].in;

    fout << nr << "\n";

    for(i = 1; i <= n; i++) ord[i] = i;

    for(i = 1; i <= n; i++) {
        sort(ord + 1, ord + n + 1, Cmp);
        for(j = 1; j <= n; j++) {
            if(i != ord[j] && gr[ord[j]].in > 0 && gr[i].out > 0) {
                gr[ord[j]].in--;
                gr[i].out--;
                fout << ord[j] << " " << i << "\n";
            }
        }
    }

    return 0;
}