Pagini recente » Cod sursa (job #3032124) | Cod sursa (job #1723567) | Cod sursa (job #2038823) | Cod sursa (job #473050) | Cod sursa (job #20357)
Cod sursa(job #20357)
#include <stdio.h>
#include <math.h>
int a[513][513], m[513][513][10], n, nr;
inline int min(int a, int b)
{
if(a > b)
return a;
return b;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int i, j, k, p, q, sol, temp;
scanf("%d%d", &n, &nr);
for(i = 1; i <= n; ++i)
{
for(j = 1; j <= n; ++j)
{
scanf("%d", &a[i][j]);
m[i][j][0] = a[i][j];
}
}
for(k = 1; (1 << k) <= n; ++k)
{
for(i = 1; i + (1 << (k - 1)) <= n; ++i)
{
for(j = 1; j + (1 << (k - 1)) <= n; ++j)
{
m[i][j][k] = min(min(m[i][j][k - 1], m[i + (1 << (k - 1))][j][k - 1]), min(m[i][j + (1 << (k - 1))][k - 1], m[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1]));
}
}
}
for(q = 1; q <= nr; ++q)
{
scanf("%d%d%d", &i, &j, &k);
temp = k;
p = -1;
while(temp)
{
temp >>= 1;
++p;
}
sol = min(min(m[i][j][p], m[i][j + k - (1 << p)][p]), min(m[i + k - (1 << p)][j][p], m[i + k - (1 << p)][j + k - (1 << p)][p]));
printf("%d\n", sol);
}
return 0;
}