Cod sursa(job #1835)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 14 decembrie 2006 21:39:27
Problema Taramul Nicaieri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#define fin "harta.in"
#define fout "harta.out"
#define NMAX 101
int n,m,grad[NMAX][2],v[NMAX][NMAX];
FILE *in,*out;
//0 ext, 1 int

int main() {
int i,j,ap[NMAX];
	in=fopen(fin,"r"); out=fopen(fout,"w");
	fscanf(in,"%i",&n);
	for (i=1;i<=n;++i) fscanf(in,"%i%i",&grad[i][0],&grad[i][1]);
	
	for (i=1;i<=n;++i) {
		
		for (j=1;j<=n;++j) ap[j]=0;

		for (j=i+1;j<=n && grad[i][0];++j) 
			
			if (grad[j][1]) { 
				v[i][j]=1;
				++m;
				grad[j][1]--;
				grad[i][0]--;
				ap[j]=1;
			}
		
		for (j=i+1;j<=n && grad[i][1];++j) 
			
			if (grad[j][0] && !ap[j]) { 
				v[j][i]=1;
				++m;
				grad[j][0]--;
				grad[i][1]--;
			}
	}

	fprintf(out,"%i\n",m);

	for (i=1;i<=n;i++)
		for (j=1;j<=n;++j) 
		if (v[i][j]) 
		fprintf(out,"%i %i\n",i,j);
		
	

	fclose(in); fclose(out);

	return 0;	
}