Pagini recente » Cod sursa (job #126884) | Cod sursa (job #2230915) | Cod sursa (job #2590598) | Cod sursa (job #1034632) | Cod sursa (job #114847)
Cod sursa(job #114847)
#include<stdio.h>
#include<algorithm>
using namespace std;
int n, m, a[505][505], d[505][505][10], x, y, lt, p, pt[10], i, j, k, mx;
int main()
{
freopen("plantatie.in", "rt", stdin);
freopen("plantatie.out", "wt", stdout);
scanf("%d%d", &n, &m);
for (i=1; i<=n; i++)
for (j=1; j<=n; j++){
scanf("%d", &a[i][j]);
d[i][j][0] = a[i][j];
}
pt[0] = 1;
pt[1] = 2;
for (i=2; 2*pt[i-1] <= 1000; i++)
pt[i] = pt[i-1]*2;
for (k=1; pt[k] <= n; k++)
for (i=1; i<=n; i++)
for (j=1; j<=n; j++){
mx = 0;
mx = max(mx, d[i][j][k-1]);
mx = max(mx, d[i][j+pt[k-1]][k-1]);
mx = max(mx, d[i+pt[k-1]][j][k-1]);
mx = max(mx, d[i+pt[k-1]][j+pt[k-1]][k-1]);
d[i][j][k] = mx;
}
for (i=1; i<=m; i++){
scanf("%d%d%d", &x, &y, <);
p = 0;
while (pt[p+1] <= lt)
p ++;
mx = 0;
mx = max(mx, d[x][y][p]);
mx = max(mx, d[x+lt-pt[p]][y][p]);
mx = max(mx, d[i][y+lt-pt[p]][p]);
mx = max(mx, d[x+lt-pt[p]][y+lt-pt[p]][p]);
printf("%d\n", mx);
}
fclose(stdin);
fclose(stdout);
return 0;
}