Pagini recente » Istoria paginii runda/rar92/clasament | Cod sursa (job #1220941) | Cod sursa (job #1321627) | Cod sursa (job #3221933) | Cod sursa (job #3170642)
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define MOD 1000000007
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int rmq[12][501][501];
int e[1001];
int main()
{
int n,q;
fin >> n >> q;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
fin >> rmq[0][i][j];
}
}
for(int p=1;(1<<p)<=n;p++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
int a1=rmq[p-1][i][j];
if(i+(1<<(p-1)) <=n)a1=max(a1,rmq[p-1][i+(1<<(p-1))][j]);
if(j+(1<<(p-1)) <= n)a1=max(a1,rmq[p-1][i][j+(1<<(p-1))]);
if(i+(1<<(p-1)) <=n && j+(1<<(p-1)) <= n)a1=max(a1,rmq[p-1][i+(1<<(p-1))][j+(1<<(p-1))]);
rmq[p][i][j]=a1;
}
}
}
e[1]=0;
for(int i=2;i<=n;i++)e[i]=e[i/2]+1;
while(q--)
{
int x,y,w;
fin >> x >> y >> w;
int len = e[w];
int x1=x+w-(1<<len);
int y1=y+w-(1<<len);
int r = max(rmq[len][x][y],rmq[len][x1][y1]);
r = max(r,max(rmq[len][x][y1],rmq[len][x1][y]));
fout << r << "\n";
}
}
// 1 4 6 8 9