Pagini recente » Cod sursa (job #1754798) | Cod sursa (job #1026331) | Cod sursa (job #1556931) | Cod sursa (job #1702994) | Cod sursa (job #19797)
Cod sursa(job #19797)
// plantatie de pe infoarena
#include<stdio.h>
#include<math.h>
int n, m, a[512][512], v[512][512], len;
int main()
{
freopen("plantatie.in", "r", stdin);
freopen("plantatie.out", "w", stdout);
int i, j, k, c, max;
scanf("%d%d", &n, &m);
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
scanf("%d", &a[i][j]);
len=(int)sqrt(n);
for (i=1; i<=len; i++)
for (j=1; j<=len; j++)
{
for (max=0, k=(i-1)*len+1; k<=i*len; k++)
for (c=(j-1)*len+1; c<=j*len; c++)
if (a[k][c]>max) max=a[k][c];
v[i][j]=max;
}
int r, p, o, xd, xe, yd, ye; //r si p coordonatele coltului stanga sus o latura patratului
for (k=1; k<=m; k++)
{
scanf("%d%d%d", &r, &p, &o);
--o;
max=0;
xd=r/len+1; xe=(r+o)/len;
yd=p/len+1; ye=(p+o)/len;
for (i=xd; i<=xe; i++)
for (j=yd; j<=ye; j++)
if (v[i][j]>max) max=v[i][j];
for (i=r; i<=xd*len; i++)
for (j=p; j<=p+o; j++)
if (a[i][j]>max) max=a[i][j];
for (i=xe*len; i<=r+o; i++)
for (j=p; j<=p+o; j++)
if (a[i][j]>max) max=a[i][j];
for (i=r; i<=r+o; i++)
for (j=p; j<=yd*len; j++)
if (a[i][j]>max) max=a[i][j];
for (i=r; i<=r+o; i++)
for (j=ye*len; j<=p+o; j++)
if (a[i][j]>max) max=a[i][j];
printf("%d\n", max);
}
return 0;
}