Cod sursa(job #18217)

Utilizator slayer4uVictor Popescu slayer4u Data 18 februarie 2007 10:47:02
Problema Zone Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 9-a si gimnaziu Marime 1.75 kb
#include<stdio.h>
long x[513][513],i,j,a,b,c,d,n,m,v[10];
int correct(int a,int b, int c, int d)
{
	int i,j;
	int sum=0;

	if (a==2 && b==3 && c==3 && d==3)
		sum=0;

	for (i=1;i<=a-1;i++)
		for (j=1;j<=b-1;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=1;i<=a-1;i++)
		for (j=b;j<=d;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=1;i<=a-1;i++)
		for (j=d+1;j<=n;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=a;i<=c;i++)
		for (j=1;j<=b-1;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=a;i<=c;i++)
		for (j=b;j<=d;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=a;i<=c;i++)
		for (j=d+1;j<=n;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=c+1;i<=n;i++)
		for (j=1;j<=b-1;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	for (i=c+1;i<=n;i++)
		for (j=b;j<=d;j++)
			sum+=x[i][j];
	for (i=1;i<=9;i++)
		if (sum==v[i]) break;
	if (i==10) return 0;
	sum=0;

	return 1;
}
int main()
{
	freopen ("zone.in","rt",stdin);
	freopen ("zone.out","wt",stdout);

	scanf("%ld",&n);

	for (i=1;i<=9;i++) scanf("%ld",&v[i]);

	for (i=1;i<=n;i++)
		for (j=1;j<=n;j++)
			scanf("%ld",&x[i][j]);

	for (a=2;a<=n-1;a++)
		for (b=2;b<=n-1;b++)
		{
			for (c=a;c<=n-1;c++)
				for (d=b;d<=n-1;d++)
				{
					if (correct(a,b,c,d))
					{
						printf("%d %d %d %d\n",a-1,b,c-1,d);return 0;
					}
				}
		}
	return 0;
}