Pagini recente » Cod sursa (job #1750459) | Cod sursa (job #1536072) | Cod sursa (job #78566) | Cod sursa (job #1680849) | Cod sursa (job #1046056)
#include <stdio.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <queue>
#include <cstdlib>
#include <iomanip>
#include <cmath>
using namespace std;
#define NMAX 501
int plant[10][NMAX][NMAX], maximPow[NMAX];
int maxim (int a, int b, int c)
{
int maxCurent = max (a, b);
return ( max (maxCurent, c) );
}
void calcMaximPow ()
{
maximPow[1] = 0;
for (int i = 2; i < NMAX; i++)
{
maximPow[i] = maximPow[i/2] + 1;
}
}
int main ()
{
int N, M, x, y, l;
FILE *f = fopen ("plantatie.in", "r");
FILE *g = fopen ("plantatie.out", "w");
calcMaximPow();
char *d;
fscanf (f, "%d %d", &N, &M);
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
fscanf (f, "%d", &plant[0][i][j]);
}
}
int lenght = maximPow[N];
for (int p = 1; p <= lenght; p++)
{
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
plant[p][i][j] = maxim (plant[p - 1][i][j], plant[p - 1][i][j + (1<<(p - 1))],
plant[p - 1][i + (1<<(p - 1))][j]);
}
}
}
for (int i = 0; i < M; i++)
{
fscanf (f, "%d %d %d", &x, &y, &l);
int powl = maximPow[l];
int result = maxim (plant[powl][x][y], plant[powl][x][y + l - (1<<powl)],
plant[powl][x + l - (1<<powl)][y], plant[powl][x + l - (1<<powl)][y + l - (1<<powl)]);
fprintf(f, "%d", result);
}
fclose(f);
fclose(g);
return 0;
}