Pagini recente » Cod sursa (job #2880036) | Cod sursa (job #2806984) | Cod sursa (job #1232136) | Cod sursa (job #1461660) | Cod sursa (job #1049015)
//
// main.cpp
// rmq
//
// Created by Catalina Brinza on 12/2/13.
// Copyright (c) 2013 Catalina Brinza. All rights reserved.
//
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("plantatie.in");
ofstream g("plantatie.out");
int maxim(int x,int y,int z,int q)
{
if (x<q) x=q;
if (x<y) x=y;
if (x<z) x=z;
return x;
}
int main()
{int rmq[00][500][10];
int n,i,x,m,y,l,ji,z,h;
f>>n>>m;
for(i=0;i<n;++i)
for (ji=0;ji<n;++ji)
f>>rmq[i][ji][0];
for (l=1;(1<<l)<=n;++l)
{
h=1<<(l-1);
for (i=0;i<n;++i)
for (ji=0;ji<n;++ji)
if (i+(h<<1)>n || ji+(h<<1)>n) rmq[i][ji][l]=0;
else
rmq[i][ji][l]=maxim(rmq[i][ji][l-1],rmq[i][ji+h][l-1],rmq[i+h][ji][l-1],rmq[i+h][ji+h][l-1]);
}
for (i=0;i<m;++i)
{
f>>x>>y>>z;
x--;y--;
int l=log2(z);
x=maxim(rmq[x][y][l],rmq[x+z-(1<<l)][y][l],rmq[x][y+z-(1<<l)][l],rmq[x+z-(1<<l)][y+z-(1<<l)][l]);
g<<x<<"\n";
}
return 0;
}