Cod sursa(job #3324677)

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

using namespace std;

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

int n, i, j, grIn[102], grOut[102];
int rasp, ord[102];

static inline bool Cmp(int a, int b) {
    return grIn[a] > grIn[b] || (grIn[a] == grIn[b] && grOut[a] > grOut[b]);
}

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

    fin >> n;
    for(i = 1; i <= n; i++) {
        fin >> grIn[i] >> grOut[i];
        rasp += grIn[i];
        ord[i] = i;
    }

    //sort(ord + 1, ord + n + 1, Cmp);

    fout << rasp << "\n";
    for(i = 1; i <= n; i++) {
        if(grOut[i] == 0) continue;
        sort(ord + 1, ord + n + 1, Cmp);

        for(j = 1; j <= n; j++) {
            if(i == ord[j]) continue;
            if(grIn[ord[j]] > 0 && grOut[i] > 0) {
                grIn[ord[j]]--;
                grOut[i]--;
                fout << ord[j] << " " << i << "\n";
            }
        }
    }

    return 0;
}