Cod sursa(job #1444343)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 29 mai 2015 16:34:19
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.92 kb
#include <iostream>
#include <vector>
#include <fstream>
#define Nmax 101

using namespace std;

int N, M;
int m[Nmax][Nmax];
int gradInt[Nmax], gradExt[Nmax];

fstream f("harta.in", ios::in);
fstream g("harta.out", ios::out);

int main()
{
    f>>N;

    int k, nod;

    for(int i = 1; i <= N; ++i)
    {
        f>>gradExt[i]>>gradInt[i];
        M+= gradInt[i];
    }

    g<<M<<'\n';

    for(int i = 1; i <= N; ++i)
    {
        vector <int> nr(N + 1, 0);

        for (int j = 1; j <= N; ++j)
            if (i != j && gradInt[j])
                m[gradInt[j]][++nr[gradInt[j]]] = j;

        for (int j = N; j > 0; --j)
        {
            k = nr[j];
            while(gradExt[i] && k)
            {
                nod = m[j][k--];
                gradExt[i]--;
                gradInt[nod]--;
                g<<i<<' '<<nod<<'\n';
            }
        }
    }

    return 0;
}