Pagini recente » Cod sursa (job #2241118) | Cod sursa (job #31079) | Cod sursa (job #2133178) | Cod sursa (job #443524) | Cod sursa (job #2349066)
#include <stdio.h>
#include <iostream>
using namespace std;
FILE *in,*out;
int n,mm;
int log2[510],m[12][502][502];
void read(){
fscanf(in,"%d %d",&n,&mm);
for(int i=1;i<n;i++)
for(int j=1;j<=n;j++)
fscanf(in,"%d",&m[0][i][j]);
}
void form_log(){
log2[2]=1;
for(int i=2;i<=504;i++)
log2[i]=log2[i/2]+1;
}
void solve(){
for(int k=1;k<=log2[n];k++)
for(int i=1;i<=n-(1<<k);i++)
for(int j=1;j<=n-(1<<k);j++)
m[k][i][j]=max(max(m[k-1][i][j],m[k-1][i][j+(1<<(k-1))]),max(m[k-1][i+(1<<(k-1))][j],m[k-1][i+(1<<(k-1))][j+(1<<(k-1))]));
}
void write(){
int l,i,j,lv,sol;
for(int w=1;w<=mm;w++){
fscanf(in,"%d %d %d",&i,&j,&l);
lv=log2[j-i+1];
sol=max(max(m[lv][i][j],m[lv][i][j+l-(1<<lv)]),max(m[lv][i+l-(1<<lv)][j],m[lv][i+l-(1<<lv)][j+l-(1<<lv)]));
fprintf(out,"%d\n",sol);
}
}
int main(){
in=fopen("plantatie.in","r");
out=fopen("plantatie.out","w");
read();
form_log();
solve();
write();
return 0;
}