Cod sursa(job #1443219)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 27 mai 2015 10:45:29
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
//Dragan Andrei Gabriel
//Universitatea din Bucuresti

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int N, S, nod, M[101][101];
int X[105], Y[105], V[105];

int main()
{
    freopen("harta.in","r",stdin);
    freopen("harta.out","w",stdout);
    scanf("%d",&N);
    for (int i = 1; i <= N; i++)
        {
            scanf("%d %d", &X[i], &Y[i]);
            S += X[i];
        }
    printf("%d\n", S);

    for (int i = 1; i <= N; i++)
    {
        memset(V, 0, sizeof(V));
        for (int j = 1; j <= N; j++)
            if (Y[j] && i != j)
                    M[Y[j]][++V[Y[j]]] = j;
        for (int j = N; j && X[i]; j--)
            for (int k = V[j]; k && X[i]; k--)
                {
                    nod = M[j][k];
                    X[i]--;
                    Y[nod]--;
                    printf("%d %d\n", i, nod);
                }
    }
    return 0;
}