Pagini recente » Cod sursa (job #1216329) | Cod sursa (job #906744) | Cod sursa (job #1635240) | Cod sursa (job #677842) | Cod sursa (job #2752019)
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream in("plantatie.in");
ofstream out("plantatie.out");
int main()
{
int n,m,x,y, maxim;
in >> n >> m;
int ans[502][502][11];
int vec[1002];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
in >> ans[i][j][0];
}
}
vec[1]=0;
for (int i = 2; i <= n; ++i)
vec[i] = 1 + vec[i / 2];
for(int z=1;(1<<z)<=n;z++)
for(int i=1;i+(1<<z)-1<=n;i++)
for(int j=1;j+(1<<z)-1<=n;j++){
ans[i][j][z]=max(ans[i][j][z-1], ans[i][j+(1<<(z-1))][z-1]);
ans[i][j][z]=max(ans[i+(1<<(z-1))][j][z-1],ans[i][j][z]);
ans[i][j][z]=max(ans[i+(1<<(z-1))][j+(1<<(z-1))][z-1],ans[i][j][z]);
}
int k;
for(int i=1;i<=m;i++){
in >> x >> y >> k;
int p = vec[y - x + 1];
maxim=max(ans[x][y][p], ans[x][y+k-(1<<p)][p]);
maxim=max(maxim, ans[x+k-(1<<p)][y][p]);
maxim=max(maxim, ans[x+k-(1<<p)][y+k-(1<<p)][p]);
out << maxim << "\n";
}
return 0;
}