Pagini recente » Cod sursa (job #2000293) | Cod sursa (job #1683484) | Cod sursa (job #1507840) | Cod sursa (job #2217437) | Cod sursa (job #1449844)
#include <bits/stdc++.h>
int N,M,Sol,Lg,DP[501][501][9];
inline int Max(int A,int B)
{
return (A > B) ? A : B;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d %d",&N,&M);
int i,j,k;
for (i = 1;i <= N;i++)
for (j = 1;j <= N;j++)
scanf("%d",&DP[i][j][0]);
for (k = 1;(1 << k) <= N;k++)
{
Lg = (1 << (k - 1));
for (i = 1;i+Lg-1<= N;i++)
for (j = 1;j+Lg-1 <= N;j++)
DP[i][j][k] = Max(Max(DP[i][j][k-1],DP[i][j+Lg][k-1]),Max(DP[i+Lg][j][k-1],DP[i+Lg][j+Lg][k-1]));
}
while (M--)
{
scanf("%d %d %d",&i,&j,&k);
Lg = log2(k);
Sol = Max(Max(DP[i][j][Lg],DP[i+k-(1 << Lg)][j][Lg]),Max(DP[i][j+k-(1 << Lg)][Lg],DP[i+k-(1 << Lg)][j+k-(1 << Lg)][Lg]));
printf("%d\n",Sol);
}
return 0;
}