Pagini recente » Cod sursa (job #2031382) | Cod sursa (job #927532) | Cod sursa (job #2383406) | Cod sursa (job #1930150) | Cod sursa (job #964603)
Cod sursa(job #964603)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("zone.in");
ofstream g("zone.out");
int n,i,j,k,p,x;
long long a[520][520],c[10];
bool viz[10];
inline int exista(long long x)
{
for(int i=1;i<=9;++i)
if(!viz[i]&&c[i]==x)
return i;
return 0;
}
inline long long calcul(int x11,int y11,int x2,int y2)
{
return a[x2][y2]+a[x11][y11]-a[x2][y11]-a[x11][y2];
}
inline bool verif(int aa,int b,int cc,int d)
{
int x,l[4],c[4];
l[0]=c[0]=0;
l[1]=aa;
l[2]=b;
c[1]=cc;
c[2]=d;
l[3]=c[3]=n;
for(int i=1;i<=3;++i)
for(int j=1;j<=3;++j)
{
long long v=calcul(l[i-1],c[j-1],l[i],c[j]);
x=exista(v);
if(!x||viz[x])
return 0;
viz[x]=1;
}
return 1;
}
int main()
{
f>>n;
for(i=1;i<=9;++i)
f>>c[i];
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
f>>x;
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+x;
}
for(i=1;i<n;++i)
for(j=1;j<n;++j)
if(exista(a[i][j]))
for(k=i+1;k<n;++k)
for(p=j+1;p<n;++p)
{
memset(viz,0,sizeof(viz));
if(verif(i,k,j,p))
{
g<<i<<' '<<k<<' '<<j<<' '<<p<<'\n';
return 0;
}
}
return 0;
}