Cod sursa(job #1967008)

Utilizator mateibanuBanu Matei Costin mateibanu Data 15 aprilie 2017 19:38:52
Problema Plantatie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <algorithm>
#include <math.h>

using namespace std;

FILE*f=fopen("plantatie.in","r");
FILE*g=fopen("plantatie.out","w");

int v[510][510],a[510][510][15];

int main()
{
    int n,q,x,y,j,i,k,l;
    fscanf(f,"%d%d",&n,&q);
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++){
            fscanf(f,"%d",&v[i][j]);
            a[i][j][0]=v[i][j];
        }
    for (k=1;(1<<k)<=n;k++)
        for (i=1;i-1+(1<<k)<=n;i++)
            for (j=1;j-1+(1<<k)<=n;j++){
                a[i][j][k]=max(max(a[i][j][k-1],a[i+(1<<(k-1))][j+(1<<(k-1))][k-1]),max(a[i][j+(1<<(k-1))][k-1],a[i+(1<<(k-1))][j][k-1]));
            }
    for (i=1;i<=q;i++){
        fscanf(f,"%d%d%d",&x,&y,&l);
        k=log2(l);
        fprintf(g,"%d\n",max(max(a[x][y][k],a[x+l-(1<<k)][y+l-(1<<k)][k]),max(a[x][y+l-(1<<k)][k],a[x+l-(1<<k)][y][k])));
    }
    fclose(f);
    fclose(g);
    return 0;
}