Cod sursa(job #1445794)

Utilizator sherban26FMI Mateescu Serban-Corneliu sherban26 Data 31 mai 2015 01:07:49
Problema Taramul Nicaieri Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <cstring>

#define NMAX 110

using namespace std;

ifstream fin("harta.in");
ofstream fout("harta.out");

int n, m;
int gri[NMAX], gro[NMAX];
int nr[NMAX];
int mat[NMAX][NMAX];

int main()
{
    fin >> n;
    for (int i = 1; i <= n; ++i)
    {
        fin >> gro[i] >> gri[i];
        m += gro[i];
    }

    fout << m << "\n";

    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= n; ++j)
        {
            if (i != j && gri[j])
            {
                mat[gri[j]][++nr[gri[j]]] = j;
            }
        }

        for (int j = n; j > 0; --j)
        {
            int cnt = nr[j];
            while (gro[i] && cnt)
            {
                fout << i << " " << mat[j][cnt] << "\n";
                gro[i]--;
                gri[mat[j][cnt]]--;
                cnt--;
            }
        }

        memset(nr, 0, sizeof(nr));
    }

    return 0;
}