Cod sursa(job #20886)

Utilizator Spike7d5Spike7d5 Spike7d5 Data 22 februarie 2007 16:16:29
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define MAX1 305
#define MAX2 51

int max (int a, int b, int c, int d) {
int sol=a;
if (sol<b) sol=b;
if (sol<c) sol=c;
if (sol<d) sol=d;
return sol; }

int main () {
int n, t, i, j, k, x, y, l, p[MAX1][MAX1], d[MAX1][MAX1][MAX2];
freopen ("plantatie.in", "rt", stdin);
freopen ("plantatie.out", "wt", stdout);

scanf ("%d%d", &n, &t);
for (i=0;i<=n+1;i++) for (j=0;j<MAX2;j++) d[n+1][i][j]=d[i][n+1][j]=0;
for (i=1;i<=n;i++) for (j=1;j<=n;j++) { scanf ("%d", &p[i][j]); d[i][j][0]=0; }

for (i=n;i>=1;i--)
  for (j=n;j>=1;j--)
    for (k=1;k<MAX2;k++)
      d[i][j][k]=max(d[i+1][j][k-1], d[i][j+1][k-1], d[i+1][j+1][k-1], p[i][j]);

for (i=0;i<t;i++) {
  scanf ("%d%d%d", &x, &y, &l);
  printf ("%d\n", d[x][y][l]); }

return 0;
}