Pagini recente » Cod sursa (job #1594436) | Cod sursa (job #581543) | Cod sursa (job #1248035) | Cod sursa (job #1917828) | Cod sursa (job #542496)
Cod sursa(job #542496)
#include<stdio.h>
#define max(a,b) a>b?a:b
int i,j,k,l,m,n;
int c1[100][100],c2[100][100],c3[100][100],c4[ 100 ][ 100 ];
int a[ 100 ][ 100],b[ 100 ][ 100 ],sol;
bool v[ 100 ][ 100 ];
void citire(){
freopen("pixels.in","r",stdin);
scanf("%d",&n);
int i,j;
for(i = 1 ; i <= n ;i++)
for(j = 1; j <= n ; j++)
scanf("%d ",&a[i][j]);
for(i = 1 ; i <= n ;i++)
for(j = 1; j <= n ; j++)
scanf("%d ",&b[i][j]);
for(i = 1 ; i <= n ;i++)
for(j = 1; j <= n ; j++)
scanf("%d %d %d %d",&c1[i][j],&c2[i][j],&c3[i][j],&c4[i][j]);
sol = (-1) * ( 1 << 30);
}
void check(){
int r = 0;
int i,j;
for(i = 1 ;i <= n ;i++)
for(j = 1 ; j <= n ;j++)
{if(v[i][j])
r+=a[i][j];
else
r+=b[i][j];
if(v[i][j] != v[i-1][j])
r -= c1[i][j];
if(v[i][j] != v[i][j-1])
r-= c3[i][j];
}
sol = max(sol,r);
}
void back(int i,int j){
if(i == j && j == n)
{v[i][j ] = true;
check();
v[i][j] = false;
check();
return;}
v[i][j] = true;
if(j == n)
back(i+1,1);
else
back(i,j+1);
v[i][j] = false;
if(j == n)
back(i+1,1);
else
back(i,j+1);
}
void afisare(){
freopen("pixels.out","w",stdout);
printf("%d",sol);
}
int main(){
citire();
back(1,1);
afisare();
return 0;}