Pagini recente » Cod sursa (job #423441) | Cod sursa (job #1926410) | Cod sursa (job #2131807) | Cod sursa (job #991460) | Cod sursa (job #2481101)
#include <iostream>
#include <fstream>
using namespace std;
int r[10][505][505];
int log[505];
int main()
{
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int n,m;
in>>n>>m;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
in>>r[0][i][j];
}
}
log[1]=0;
for (int i=2;i<=n;i++)
{
log[i]=1+log[i/2];
}
for (int o=1;o<=log[n];o++)
{
for (int i=0;i+(1<<o)<=n;i++)
{
for (int j=0;j+(1<<o)<=n;j++)
{
r[o][i][j]=max(max(r[o-1][i][j],r[o-1][i][j+(1<<(o-1))]),max(r[o-1][i+(1<<(o-1))][j],r[o-1][i+(1<<(o-1))][j+(1<<(o-1))]));
}
}
}
for (int o=0;o<=log[n];o++)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
cout<<r[o][i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
int x1,y1,k,x2,y2;
for (int i=1;i<=m;i++)
{
in>>x1>>y1>>k;
x1--;
x2--;
x2=x1+k-1;
y2=y1+k-1;
int l=log[k];
out<<max(max(r[l][x1][y1],r[l][x1][y2-(1<<l)+1]),max(r[l][x2-(1<<l)+1][y1],r[l][x2-(1<<l)+1][y2-(1<<l)+1]))<<"\n";
}
in.close();
out.close();
return 0;
}