Pagini recente » Cod sursa (job #3182141) | Cod sursa (job #258793) | Cod sursa (job #2817323) | Cod sursa (job #550439) | Cod sursa (job #3243636)
#include <bits/stdc++.h>
using namespace std;
long long rmq[58][105][105];
long long l2(long long val)
{
return 31 - __builtin_clz(val);
}
long long p2(long long val)
{
return (1 << val);
}
int main()
{
//ifstream cin("plantatie.in");
//ofstream cout("plantatie.out");
long long n,m;
cin>>n>>m;
for(long long i = 0; i<n; i++)
{
for(long long j = 0; j<n; i++)
{
cin>>rmq[0][i][j];
}
}
long long pwr = l2(n);
for(long long k = 1; k<=pwr; k++)
{
long long pp = p2(k);
for(long long i = 0; i + pp < n; i++)
{
for(long long j = 0; j + pp < n; j++)
{
rmq[k][i][j] = max(rmq[k - 1][i][j],max( rmq[k - 1][i + pp][j],max(rmq[k - 1][i][j + pp], rmq[k - 1][i + pp][j + pp])));
}
}
}
for(long long i = 0; i<m; i++)
{
long long a,b,c;
cin>>a>>b>>c;
a -= 1;
b -= 1;
c -= 1;
long long ld = l2(c);
long long pld = p2(ld);
long long d = c - pld;
cout << max(rmq[ld][a][b],max( rmq[ld][a + d][b],max( rmq[ld][a][b + d],rmq[ld][a + d][b + d])))<< endl;
}
return 0;
}