Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define log(x) 31-__builtin_clz(x)
- using namespace std;
- ifstream fin ("plantatie.in");
- ofstream fout ("plantatie.out");
- int N, M, rmq[10][512][512];
- int main () {
- fin >> N >> M;
- for (int i = 0; i < N; i ++)
- for (int j = 0; j < N; j ++)
- fin >> rmq[0][i][j];
- for (int k = 1; (1 << k) <= N; k ++)
- for (int i = 0; i + (1 << k) <= N; i ++)
- for (int j = 0; j + (1 << k) <= N; j ++)
- rmq[k][i][j] = max (max (rmq[k - 1][i][j], rmq[k - 1][i][j + (1 << (k - 1))]),
- max (rmq[k - 1][i + (1 << (k - 1))][j], rmq[k - 1][i + (1 << (k - 1))][j + (1 << (k - 1))]));
- while (M --) {
- int i, j, k;
- fin >> i >> j >> k;
- i --, j --;
- int lg = log(k);
- fout << max (max (rmq[lg][i][j], rmq[lg][i][j - (1 << lg) + k]),
- max (rmq[lg][i - (1 << lg) + k][j], rmq[lg][i - (1 << lg) + k][j - (1 << lg) + k])) << '\n';
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment