Cod sursa(job #183702)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 22 aprilie 2008 14:58:31
Problema Taramul Nicaieri Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<stdio.h>
int outt[102],inn[102],cmm,n,i,j,ok,a[102][102],s;
int main()
{
   freopen("harta.in","r",stdin);
   freopen("harta.out","w",stdout);
   scanf("%ld",&n);
   for(i=1;i<=n;i++)
    scanf("%ld %ld",&outt[i],&inn[i]);
   for(i=1;i<=n;i++)
   {
     for(j=1;j<=n;j++)
      if (i!=j)
        {
         if (!outt[i]) break;
         if (inn[j]>0)
             {
              inn[j]--;
              outt[i]--;
             a[i][j]=1;
             }
        }
  }
  while (outt[n])
    {
       ok=0;
          for(i=1;i<=n;i++)
           if (!a[n][i])
              {
                for(j=1;j<n;j++)
                 if (a[j][i])
                     {
                     ok=1;
                     a[j][i]=0;
                     a[j][n]=1;
                     a[n][i]=1;
                     outt[n]--;
                     inn[n]--;
                     break;
                     }
                 if (ok) break;
              }
    }
  for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
    s+=a[i][j];
  printf("%ld\n",s);
  for(i=1;i<=n;i++)
   for(j=1;j<=n;j++)
    if (a[i][j]) printf("%ld %ld\n",i,j);
  return 0;
}