Pagini recente » Cod sursa (job #514955) | Cod sursa (job #3222488) | Cod sursa (job #1794562) | Cod sursa (job #371138) | Cod sursa (job #17693)
Cod sursa(job #17693)
using namespace std;
#include <cstdio>
#include <algorithm>
#define FIN "harta.in"
#define FOUT "harta.out"
#define NMAX 101
int N, a[NMAX][NMAX], ind[NMAX];
struct nod {int go, come;};
nod v[NMAX];
int cmp (const int a, const int b)
{
return v[a].come < v[b].come;
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
scanf ("%d", &N);
for (int i = 1; i <= N; ++ i)
{
scanf ("%d%d", &v[i].go, &v[i].come);
ind[i] = i;
}
for (int i = 1; i <= N; ++ i)
{
sort (ind+1, ind+N+1, cmp);
for (int j = N; j >= 1; -- j)
if (i != ind[j])
if (v[ind[j]].come && v[i].go)
{
-- v[ind[j]].come;
-- v[i].go;
a[i][ind[j]] = 1;
}
}
int sol = 0;
for (int i = 1; i <= N; ++ i)
for (int j = 1; j <= N; ++ j)
if (a[i][j])
++ sol;
printf ("%d\n", sol);
for (int i = 1; i <= N; ++ i)
for (int j = 1; j <= N; ++ j)
if (a[i][ind[j]])
printf ("%d %d\n", i, ind[j]);
return 0;
}