Cod sursa(job #20756)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 22 februarie 2007 03:34:52
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include<stdio.h>
int n,i,j,l1,l2,c1,c2,viz[10];long int t[10],a,s[51][51],aux,gasit;
int main()
{ FILE *f=fopen("zone.in","r");
  /*CITIRE*/fscanf(f,"%d",&n);
	    for(i=1;i<=9;i++)
	    fscanf(f,"%ld",&t[i]);
	    for(i=1;i<=8;i++)for(j=i+1;j<=9;j++)if(t[i]>t[j]){aux=t[i];t[i]=t[j];t[j]=aux;}
	    for(i=1;i<=n;i++)for(j=1;j<=n;j++){fscanf(f,"%ld",&a);s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a;}fclose(f);
	    for(l1=1;l1<=n-2;l1++)
	    {gasit=0;
	    for(i=1;i<=9;i++)
	    viz[i]=0;
	    for(c1=1;c1<=n-1;c1++)
	    {if(s[l1][c1]>t[9])break;
	     for(i=1;i<=9;i++)
	     if(t[i]==s[l1][c1])
	     {gasit=1;viz[i]=1;break;}
	      if(gasit)
	      {gasit=0;
	       for(l2=l1+1;l2<=n-1;l2++)
	       {if(s[l2][c1]-s[l1][c1]>t[9]) break;
		for(i=1;i<=9;i++)
		if((viz[i]==0)&&(t[i]==(s[l2][c1]-s[l1][c1])))
		{gasit=1;viz[i]=1;break;}
		if(gasit)
		{gasit=0;
		 for(i=1;i<=9;i++)
		 if((viz[i]==0)&&(t[i]==(s[n][c1]-s[l2][c1])))
		 {gasit=1;viz[i]=1;break;}
		 if(gasit)
		 {gasit=0;
		  for(c2=c1+1;c2<=n-1;c2++)
		  {if(s[l1][c2]-s[l1][c1]>t[9]) break;
		   for(i=1;i<=9;i++)
		   if((viz[i]==0)&&(t[i]==(s[l1][c2]-s[l1][c1])))
		   {gasit=1;viz[i]=1;break;}
		   if(gasit)
		   {gasit=0;
		    for(i=1;i<=9;i++)
		    if((viz[i]==0)&&(t[i]==(s[l1][n]-s[l1][c2])))
		    {gasit=1;viz[i]=1;break;}
		    if(gasit)
		    {gasit=0;
		     for(i=1;i<=9;i++)
		     if((viz[i]==0)&&(t[i]==(s[l2][c2]-s[l1][c2]-s[l2][c1]+s[l1][c1])))
		     {gasit=1;viz[i]=1;break;}
		      if(gasit)
		      {gasit=0;for(i=1;i<=9;i++)
		       if((viz[i]==0)&&(t[i]==(s[n][n]-s[l2][n]-s[n][c2]+s[l2][c2])))
		       {gasit=1;viz[i]=1;break;}
		      }
		     }
		    }
		   }
		  }
		 }
		}
	       }
	      }
	     if(gasit)break;
	     }
f=fopen("zone.out","w");
fprintf(f,"%d %d %d %d\n",l1,l2,c1,c2);
fclose(f);
return 0;
}