AlexNeagu11

Plantatie

Mar 19th, 2022
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 505;
  4. int dp[N][N][20], lg[N];
  5. ifstream in("plantatie.in");
  6. ofstream out("plantatie.out");
  7. int main() {
  8. ios_base::sync_with_stdio(false);
  9. cin.tie(0);
  10. lg[1] = 0;
  11. for (int i = 2; i <= N - 5; i++) {
  12. lg[i] = lg[i / 2] + 1;
  13. }
  14. int n, m;
  15. in >> n >> m;
  16. for (int i = 1; i <= n; i++) {
  17. for (int j = 1; j <= n; j++) {
  18. in >> dp[i][j][0];
  19. }
  20. }
  21. for (int k = 1; (1 << k) <= n; k++) {
  22. for (int i = 1; i <= n - (1 << k) + 1; i++) {
  23. for (int j = 1; j <= n - (1 << k) + 1; j++) {
  24. dp[i][j][k] = max(dp[i][j][k - 1], max(dp[i][j + (1 << (k - 1))][k - 1],
  25. max(dp[i + (1 << (k - 1))][j][k - 1], dp[i + (1 << (k - 1))][j + (1 << (k - 1))][k - 1])));
  26. }
  27. }
  28. }
  29. while(m--) {
  30. int a, b, k;
  31. in >> a >> b >> k;
  32. int len = lg[k];
  33. k -= (1 << len);
  34. out << max(dp[a][b][len], max(dp[a + k][b][len], max(dp[a][b + k][len], dp[a + k][b + k][len]))) << "\n";
  35. }
  36. return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment