Pagini recente » Cod sursa (job #861471) | Cod sursa (job #1694881) | Cod sursa (job #2511484) | Cod sursa (job #301817) | Cod sursa (job #18898)
Cod sursa(job #18898)
#include <stdio.h>
void com_pl(int);
int valid(int);
int final(int);
int n, s[512][512],sum[9],rip[4],c;
int main()
{
FILE *in=fopen("zone.in","rt");
int i,j;
fscanf(in,"%d",&n);
for(i=0;i<9;i++)
fscanf(in,"%d",&sum[i]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fscanf(in,"%d",&s[i][j]);
com_pl(0);
fclose(in);
return 0;
}
void scrie(){
FILE *out=fopen("zone.out","w+");
fprintf(out,"%d %d %d %d\n",rip[0],rip[1],rip[2],rip[3]);
fclose(out);
c=1;
}
void com_pl(int p){
int v;
for(v=1;v<=n&&!c;v++)
{
rip[p]=v;
if(valid(p))
if(final(p)&&!c) scrie();
else com_pl(p+1);
}
}
int final(int p)
{
return p==3;
}
int verific(int su){
for(int i=0;i<9;i++)
if(su==sum[i])
return 0;
return 1;
}
int valid(int p)
{
if(c)return 0;
if(p!=3)return 1;
int i,j,k,su=0;
for(i=0;i<rip[0];i++)
for(j=0;j<rip[2];j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=rip[0];i<rip[1];i++)
for(j=0;j<rip[2];j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=rip[1];i<n;i++)
for(j=0;j<rip[2];j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=0;i<rip[0];i++)
for(j=rip[2];j<rip[3];j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=rip[0];i<rip[1];i++)
for(j=rip[2];j<rip[3];j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=rip[1];i<n;i++)
for(j=rip[2];j<rip[3];j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=0;i<rip[0];i++)
for(j=rip[3];j<n;j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=rip[0];i<rip[1];i++)
for(j=rip[3];j<n;j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
for(i=rip[1];i<n;i++)
for(j=rip[3];j<n;j++)
su+=s[i][j];
if(verific(su))
return 0;
su=0;
return 1;
}