Cod sursa(job #507641)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 6 decembrie 2010 15:38:42
Problema Oras Scor 50
Compilator cpp Status done
Runda selectie-vianu-2011 Marime 1.15 kb
#include <stdio.h>
#define NMAX 205
int n;
char A[NMAX][NMAX],marc[NMAX][NMAX];
int main()
{
	freopen("oras.in","r",stdin);
	freopen("oras.out","w",stdout);
	scanf("%d",&n);
	int i,j,k,found;
	for (i=1; i<=n; i++)
	{
		for (j=i+1; j<=n; j++)
		{
			if (!marc[i][j])
			{
				marc[i][j]=1; marc[j][i]=1;
				A[i][j]=1;
				found=0;
				for (k=1; k<=n; k++)
					if (k!=i && k!=j)
					{
						if (marc[j][k]==1 && A[j][k]==0)
							continue ;
						if (marc[k][i]==1 && A[k][i]==0)
							continue ;
						marc[j][k]=1; marc[k][j]=1; 
						marc[k][i]=1; marc[i][k]=1;
						A[j][k]=1; A[k][j]=0; A[k][i]=1; A[i][k]=0;
						found=1;
						break ;
					}
				if (!found)
				{
					for (k=1; k<=n; k++)
						if (k!=i && k!=j)
						{
							if (marc[i][k]==1 && A[i][k]==0)
								continue ;
							if (marc[k][j]==1 && A[k][j]==0)
								continue ;
							marc[i][k]=1; marc[k][i]=1; 
							marc[k][j]=1; marc[j][k]=1;
							A[i][k]=1; A[k][i]=0; A[k][j]=1; A[j][k]=0;
							break ;
						}
				}
			}
		}
	}
	for (i=1; i<=n; i++)
	{
		for (j=1; j<=n; j++)
			printf("%d",A[i][j]);
		printf("\n");
	}
	return 0;
}