Pagini recente » Cod sursa (job #2857460) | Cod sursa (job #1596128) | Cod sursa (job #2908966) | Cod sursa (job #1772140) | Cod sursa (job #18285)
Cod sursa(job #18285)
#include <stdio.h>
void compl(int);
int final(int);
int valid(int);
void scrie();
int verific(int);
int n, s[128][128],sum[9],rip[4];
void 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]);
compl(0);
fclose(in);
}
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);
}
void compl(int p)
{
int v;
for(v=1;v<=n;v++)
{
rip[p]=v;
if(valid(p))
if(final(p)) scrie();
else compl(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(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;
}