Pagini recente » Cod sursa (job #1267868) | Cod sursa (job #1444204)
#include <cstdio>
#define NMAX 101
using namespace std;
int n, in[NMAX], out[NMAX], nrdr = 0, nr[NMAX], matr[NMAX][NMAX];
void citeste()
{
FILE *f = fopen("harta.in", "r");
fscanf(f, "%i", &n);
for (int i = 1; i <= n; i++)
{
fscanf(f, "%i%i", &out[i], &in[i]);
nrdr += in[i];
}
fclose(f);
}
void rezolva()
{
FILE *f = fopen("harta.out", "w");
int other, k;
fprintf(f, "%i\n", nrdr);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
nr[j] = 0;
for (int j = 1; j <= n; j++)
if (i != j && in[j])
matr[in[j]][++nr[in[j]]] = j;
for (int j = n; j > 0; j--)
{
k = nr[j];
while (out[i] && k)
{
other = matr[j][k--];
out[i]--;
in[other]--;
fprintf(f, "%i %i\n", i, other);
}
}
}
}
int main()
{
citeste();
rezolva();
return 0;
}