Cod sursa(job #2967156)

Utilizator catalin28Gheorghe Catalin catalin28 Data 19 ianuarie 2023 09:09:41
Problema Taramul Nicaieri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("harta.in");
ofstream g("harta.out");

struct vp{
    int pos;
    int cnt;
} v[101], tmp;

inline bool cmp(vp a, vp b){
    if(a.cnt == b.cnt)
        return a.pos > b.pos;
    return a.cnt > b.cnt;
}

int n, m, in[101], out[101];

int main() {
    f >> n;
    for(int i = 1; i <= n; i ++){
        f >> in[i] >> out[i];
        m += in[i];
    }
    g << m << "\n";
    for(int i = 1; i <= n; i ++){
        if(in[i] > 0){
            for(int j = 1; j <= n; j ++) {
                v[j].pos = j;
                v[j].cnt = out[j];
            }
            sort(v + 1, v + n + 1, cmp); // sortez in functie de out-degree, iar la egalitate in functie de pozitie
            for(int k = 1; k <= n; k ++){ // pun muchii in graf cat timp in != 0
                if(in[i] == 0) break;
                if(v[k].pos != i){
                    g << i << " " << v[k].pos << "\n";
                    in[i]--;
                    out[v[k].pos]--;
                }
            }
        }
    }
    return 0;
}