Cod sursa(job #117929)

Utilizator rethosPaicu Alexandru rethos Data 22 decembrie 2007 19:30:02
Problema Taramul Nicaieri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
FILE *f=fopen("harta.in","rt");
FILE *g=fopen("harta.out","wt");
#define NMAX 101
int n,di[NMAX],de[NMAX],a[NMAX][NMAX];
long s;
long suma()
{ int i;
  for (i=1;i<=n;i++)
	s+=di[i]+de[i];
  return s;
}
int main()
{ int i,k;
  int maxi,imax,maxe,emax;
  fscanf(f,"%d",&n);
  for (i=1;i<=n;i++)
	fscanf(f,"%d %d",&de[i],&di[i]);
  fclose(f);
  fprintf(g,"%ld\n",suma()/2);
  for (i=1;i<=n;i++)
	a[i][i]=1;
  for (k=1;k<=s/2;k++)
	{ maxi=0;
	  maxe=0;
	  for (i=1;i<=n;i++)
		if (di[i]>maxi) { maxi=di[i];
				  imax=i;
				}
	  for (i=1;i<=n;i++)
		if (de[i]>maxe&&a[i][imax]==0)
				{ maxe=de[i];
				  emax=i;
				}
	  fprintf(g,"%d %d\n",emax,imax);
	  a[imax][emax]=a[emax][imax]=1;
	  di[imax]--;
	  de[emax]--;
	}
  fclose(g);
  return 0;
}