Pagini recente » Cod sursa (job #1056547) | Cod sursa (job #2956724) | Cod sursa (job #594514) | Cod sursa (job #1366561) | Cod sursa (job #27516)
Cod sursa(job #27516)
#include<stdio.h>
int n,l1,l2,c1,c2,ok,i,j;long int a,t[10],ar[10],s[513][513],aux;
int ver2()
{ ar[1]=s[l1][c1];
ar[2]=s[l1][c2]-s[l1][c1];
ar[3]=s[l1][n]-s[l1][c2];
ar[4]=s[l2][c1]-s[l1][c1];
ar[5]=s[l2][c2]-s[l2][c1]-s[l1][c2]+s[l1][c1];
ar[6]=s[l2][n]-s[l2][c2]-s[l1][n]+s[l1][c2];
ar[7]=s[n][c1]-s[l2][c1];
ar[8]=s[n][c2]-s[n][c1]-s[l2][c2]+s[l2][c1];
ar[9]=s[n][n]-s[n][c2]-s[l2][n]+s[l2][c2];
for(i=1;i<=8;i++)
for(j=i+1;j<=9;j++)
if(ar[i]>ar[j]){aux=ar[i];ar[i]=ar[j];ar[j]=aux;}
for(i=1;i<=9;i++) if(ar[i]!=t[i]) return 0;
return 1;
}
int aria(int caz)
{
if(caz==1) return s[l1][c1];
if(caz==2) return s[l1][c2]-s[l1][c1];
if(caz==3) return s[l1][n]-s[l1][c2];
if(caz==4) return s[l2][c1]-s[l1][c1];
if(caz==5) return s[l2][c2]-s[l2][c1]-s[l1][c2]+s[l1][c1];
if(caz==6) return s[l2][n]-s[l2][c2]-s[l1][n]+s[l1][c2];
if(caz==7) return s[n][c1]-s[l2][c1];
if(caz==8) return s[n][c2]-s[n][c1]-s[l2][c2]+s[l2][c1];
if(caz==9) return s[n][n]-s[n][c2]-s[l2][n]+s[l2][c2];
return 0;
}
int ver(int caz)
{ long int v;
v=aria(caz);
for(i=1;i<=9;i++)
if(v==t[i]) return 1;
return 0;
}
int ver1()
{
return ver(3)&&ver(5)&&ver(6)&&ver(7)&&ver(8)&&ver(9);
}
int main()
{ FILE *f=fopen("zone.in","r");
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);
ok=0;
for(l1=1;l1<=n-2;l1++)
{for(c1=1;c1<=n-2;c1++)
{if(ver(1))
for(l2=l1+1;l2<=n-1;l2++)
{if(ver(4))
for(c2=c1+1;c2<=n-1;c2++)
if(ver(2))
if(ver1())
if(ver2())
{ok=1;break;}
if(ok) break;
}
if(ok)break;
}
if(ok)break;
}
f=fopen("zone.out","w");
fprintf(f,"%d %d %d %d\n",l1,l2,c1,c2);
fclose(f);
return 0;
}