Pagini recente » Cod sursa (job #463487) | Cod sursa (job #654743) | Cod sursa (job #373645) | Cod sursa (job #1279343) | Cod sursa (job #1662866)
#include <fstream>
using namespace std;
ifstream fin("zone.in");
ofstream fout("zone.out");
int n,c[15],i,a[530][530],b[530][530],j,k,x,x2,t,l;
struct elem
{
int l,c,s;
} ca[15][15],sol[1000][15];
int ver2(int l,int z,int k)
{
int x=0;
x=b[l][n]-b[l][z];
for(int i=1;i<=9;i++)
{
if(x==c[i] && i!=k && i!=sol[i][1].s && i!=sol[i][2].s && i!=sol[i][1].s)
return x;
}
return 0;
}
int ver1(int l,int z,int k)
{
int x=0;
x=b[n][z]-b[l-1][z];
for(int i=1;i<=9;i++)
{
if(x==c[i] &&i!=ca[1][i].s && i!=k)
return x;
}
return 0;
}
int main()
{
fin>>n;
for(i=1; i<=9; i++)
fin>>c[i];
for(i=1;i<=n; i++)
for(j=1; j<=n; j++)
{
fin>>a[i][j];
b[i][j]=a[i][j]+b[i-1][j]+b[i][j-1]-b[i-1][j-1];
for(k=1; k<=9; k++)
{
if(b[i][j]==c[k])
{
x++;
ca[1][x].s=k;
ca[1][x].l=i;
ca[1][x].c=j;
}
}
}
for(i=1; i<=x; i++)
{
for(j=ca[1][i].l+1;j<n;j++)
{
t=b[j][ca[1][i].c]-b[ca[1][i].l][ca[1][i].c];
for(k=1; k<=9; k++)
{
l=ver1(j+1,ca[1][i].c,k);
if(t==c[k] && k!=ca[1][i].s && l!=0)
{
x2++;
sol[x2][1].l=ca[1][i].l;
sol[x2][1].c=ca[1][i].c;
sol[x2][1].s=ca[1][i].s;
sol[x2][2].c=ca[1][i].c;
sol[x2][3].c=ca[1][i].c;
sol[x2][2].l=j;
sol[x2][2].s=k;
sol[x2][3].l=n;
sol[x2][3].s=l;
}
}
}
}
for(i=1;i<=x2;i++)
{
for(j=sol[i][1].c+1;j<n;j++)
{
t=b[sol[i][1].l][j]-b[sol[i][1].l][sol[i][1].c];
for(k=1;k<=9;k++)
{
l=ver2(sol[i][1].l,j,k);
if(t==c[k] && k!=sol[i][1].s && k!=sol[i][2].s && k!=sol[i][1].s && l!=0)
{
fout<<sol[i][1].l<<" "<<sol[i][2].l<<" "<<sol[i][1].c<<" "<<j;
return 0;
}
}
}
}
fout<<'\n';
for(i=1;i<=n; i++)
{
for(j=1; j<=n; j++)
{
fout<<b[i][j]<<" ";
}
fout<<'\n';
}
return 0;
}