Pagini recente » Cod sursa (job #184173) | Cod sursa (job #1042755) | Cod sursa (job #691400) | Cod sursa (job #2720128)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
using namespace std;
#define NMAX 505
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n, q, i, j, a[10][NMAX][NMAX], log[NMAX], x, y, k, l, dist;
int main()
{
fin>>n>>q;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
fin>>a[0][i][j];
}
}
log[0]=log[1]=0;
for(i=2; i<=n; i++)
log[i]=log[i>>1]+1;
for(k=1; k<=log[n]; k++)
{
for(i=1; i+(1<<(k-1))<=n; i++)
{
for(j=1; j+(1<<(k-1))<=n; j++)
{
int c1=max(a[k-1][i][j],a[k-1][i+(1<<(k-1))][j]);
int c2=max(a[k-1][i][j+(1<<(k-1))],a[k-1][i+(1<<(k-1))][j+(1<<(k-1))]);
a[k][i][j]=max(c1,c2);
}
}
}
while(q>0)
{
q--;
fin>>x>>y>>l;
dist=log[l];
int ul=x+l-1;
int uc=y+l-1;
int c1=max(a[dist][x][y],a[dist][ul-(1<<dist)+1][y]);
int c2=max(a[dist][x][uc-(1<<dist)+1],a[dist][ul-(1<<dist)+1][uc-(1<<dist)+1]);
fout<<max(c1,c2)<<'\n';
}
return 0;
}