Pagini recente » Cod sursa (job #1972113) | Cod sursa (job #2580561) | Cod sursa (job #2882329) | Cod sursa (job #1266939) | Cod sursa (job #19057)
Cod sursa(job #19057)
#include <stdio.h>
#include <iostream>
using namespace std;
const int mar[9] = { 1, 2, 5, 11, 23, 47, 95, 191, 383 };
int map[501][501][9];
int n,m;
int asd[10];
int x,y,l;
int maxc( int a[], int k )
{
int mmax = 0;
int l;
for ( l = 1; l <= k; l++ )
mmax = max ( mmax, a[l] );
return mmax;
}
int main()
{
int i,j,lung;
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d\n" ,&n, &m);
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= n; j++ )
{
scanf("%d ", &map[i][j][0]);
if ( i != 1 && j != 1 )
{
asd[1] = map[i-1][j-1][0];
asd[2] = map[i][j][0];
asd[3] = map[i-1][j][0];
asd[4] = map[i][j-1][0];
map[i-1][j-1][1] = maxc( asd, 4 );
}
}
for ( lung = 2; lung <= 8; lung++ )
{
for ( i = 1; i <= n-mar[lung]+1; i++ )
for ( j = 1; j <= n-mar[lung]+1;j++ )
{
asd[1] = map[ i ][ j ][ lung-1 ];
asd[2] = map[ i ][ j+mar[lung-1] ][ lung-1 ];
asd[3] = map[ i ][ j+mar[lung-1]+1 ][ lung-1 ];
asd[4] = map[ i+mar[lung-1] ][ j ][ lung-1 ];
asd[5] = map[ i+mar[lung-1]+1 ][ j ][ lung-1 ];
asd[6] = map[ i+mar[lung-1] ][ j+mar[lung-1] ][ lung-1 ];
asd[7] = map[ i+mar[lung-1] ][ j+mar[lung-1]+1 ][ lung-1 ];
asd[8] = map[ i+mar[lung-1]+1 ][ j+mar[lung-1] ][ lung-1 ];
asd[9] = map[ i+mar[lung-1]+1 ][ j+mar[lung-1]+1 ][ lung-1 ];
map[i][j][lung] = maxc( asd, 9 );
}
}
while ( m )
{
m--;
scanf("%d %d %d\n", &x, &y, &l );
for ( i = 8; i >= 0; i-- )
if ( l >= mar[i] ) break;
asd[1] = map[ x ][ y ][ i ];
asd[2] = map[ x+(l-mar[i]) ][ y ][ i ];
asd[3] = map[ x ][ y+(l-mar[i]) ][ i ];
asd[4] = map[ x+(l-mar[i]) ][ y+(l-mar[i]) ][ i ];
printf("%d\n", maxc( asd, 4 ) );
}
fclose(stdin);
fclose(stdout);
return 0;
}