Pagini recente » Cod sursa (job #786468) | Cod sursa (job #1160967) | Cod sursa (job #542789) | Cod sursa (job #1633933) | Cod sursa (job #591539)
Cod sursa(job #591539)
#include<stdio.h>
long long A[520][520];
int sol[10];
bool viz[10];
int C[3];
int L[3];
int N;
int a;
int gata = 0;
inline bool verif(int nr)
{
short int i;
for(i = 1;(sol[i] != nr || viz[i]) && i<= 9;i++);
return i < 10;
}
void cautare(int i)
{
L[1] = i;
int j;
for( j = i+1;j<=N && (!verif(A[j][C[1]]-A[i][C[1]]) ||
!verif(A[j][C[2]]-A[i][C[2]]-A[j][C[1]]+A[i][C[1]]) ||
!verif(A[j][N]-A[i][N]-A[j][C[2]]+A[i][C[2]]) ||
!verif(A[N][C[1]]-A[j][C[1]]) ||
!verif(A[N][C[2]]-A[j][C[2]]-A[N][C[1]]+A[j][C[1]]) ||
!verif(A[N][N]-A[j][N]-A[N][C[2]]+A[j][C[2]]));j++);
L[2] = j;
if(j <=N)
gata = 1;
}
void solve2(int lst,int a)
{
for(int j=lst+1;j<=N && !gata;j++)
if(verif(A[a][j] - A[a][lst]))
{
C[2] = j;
cautare(a);
}
}
void solve(void)
{
for(int i=1;i<=N && !gata;i++)
for(int j=1;j<=N && !gata;j++)
if(verif(A[i][j]))
{
C[1] = j;
solve2(j,i);
}
}
int main()
{
FILE *f = fopen("zone.in","r");
FILE *g = fopen("zone.out","w");
fscanf(f,"%d",&N);
for(int i=1;i<=9;i++)
fscanf(f,"%d ",&sol[i]);
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
{
fscanf(f,"%d",&a);
A[i][j] = a + A[i-1][j] + A[i][j-1] - A[i-1][j-1];
}
// for(int i=1;i<=N;i++)
// {
// for(int j=1;j<=N;j++)
// printf("%d ",A[i][j]);
// printf("\n");
// }
solve();
fprintf(g,"%d %d %d %d",L[1],L[2],C[1],C[2]);
fclose(g);
fclose(f);
return 0;
}