Cod sursa(job #18656)

Utilizator lorin_bobuBobulisteanu Lorin lorin_bobu Data 18 februarie 2007 12:55:23
Problema Zone Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 9-a si gimnaziu Marime 2.04 kb
#include<stdio.h>

FILE *f=fopen("zone.in","r"), *g=fopen("zone.out","w");

int n,s[9],sume[9],i,j,aux,l1,l2,c1,c2,m[512][512];

int s1() {
   int s=0;
   for(i=0;i<=l1;i++)
      for(j=0;j<=c1;j++)
	 s+=m[i][j];
   return s;
}

int s2() {
   int s=0;
   for(i=0;i<=l1;i++)
      for(j=c1+1;j<=c2;j++)
	 s+=m[i][j];
   return s;
}

int s3() {
   int s=0;
   for(i=0;i<=l1;i++)
      for(j=c2+1;j<=n;j++)
	 s+=m[i][j];
   return s;
}

int s4() {
   int s=0;
   for(i=l1+1;i<=l2;i++)
      for(j=0;j<=c1;j++)
	 s+=m[i][j];
   return s;
}

int s5() {
   int s=0;
   for(i=l1+1;i<=l2;i++)
      for(j=c1+1;j<=c2;j++)
	 s+=m[i][j];
   return s;
}

int s6() {
   int s=0;
   for(i=l1+1;i<=l2;i++)
      for(j=c2+1;j<=n;j++)
	 s+=m[i][j];
   return s;
}

int s7() {
   int s=0;
   for(i=l2+1;i<=n;i++)
      for(j=0;j<=c1;j++)
	 s+=m[i][j];
   return s;
}

int s8() {
   int s=0;
   for(i=l2+1;i<=n;i++)
      for(j=c1+1;j<=c2;j++)
	 s+=m[i][j];
   return s;
}

int s9() {
   int s=0;
   for(i=l2+1;i<=n;i++)
      for(j=c2+1;j<=n;j++)
	 s+=m[i][j];
   return s;
}

int main() {
   fscanf(f,"%d",&n);
   for(i=0;i<9;i++) fscanf(f,"%d",&s[i]);
   for(i=0;i<8;i++)
      for(j=i+1;j<9;j++)
	 if(s[i]>s[j]) {
	    aux=s[i];
	    s[i]=s[j];
	    s[j]=aux;
	 }
   for(i=0;i<n;i++)
      for(j=0;j<n;j++)
	 fscanf(f,"%d",&m[i][j]);
   for(l1=0;l1<n-1;l1++)
      for(c1=0;c1<n-1;c1++)
	 for(l2=l1+1;l2<n;l2++)
	    for(c2=c1+1;c2<n;c2++) {
	       sume[0]=s1(); sume[1]=s2(); sume[2]=s3(); sume[3]=s4();
	       sume[4]=s5(); sume[5]=s6(); sume[6]=s7(); sume[7]=s8();
	       sume[8]=s9();
	       for(i=0;i<8;i++)
		  for(j=i+1;j<9;j++)
		     if(sume[i]>sume[j]) {
			aux=sume[i];
			sume[i]=sume[j];
			sume[j]=aux;
		     }
	       int bun=1;
	       for(i=0;i<9;i++) if(s[i]!=sume[i]) bun=0;
	       if(bun==1) {
		  fprintf(g,"%d ",l1+1);
		  fprintf(g,"%d ",l2+1);
		  fprintf(g,"%d ",c1+1);
		  fprintf(g,"%d\n",c2+1);
	       }
	    }
   fclose(f);
   fclose(g);
   return 0;
}