Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- const int ZERO = 160 * 1280, NMAX = 88;
- std::bitset<2*ZERO+1> curr[NMAX], next[NMAX];
- int a[NMAX][NMAX], b[NMAX][NMAX], n, m;
- int main() {
- std::cin >> n >> m;
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= m; j++) {
- std::cin >> a[i][j];
- }
- }
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= m; j++) {
- std::cin >> b[i][j];
- }
- }
- curr[1][ZERO] = 1;
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= m; j++) {
- int delta = std::abs(a[i][j] - b[i][j]);
- next[j] |= (next[j-1] << delta) | (next[j-1] >> delta);
- next[j] |= (curr[j] << delta) | (curr[j] >> delta);
- }
- std::copy(next+1,next+m+1,curr+1);
- std::fill(next+1,next+m+1, 0);
- }
- int answ = 1281;
- for (int x = -1280; x <= 1280; x++) {
- if (curr[m][x+ZERO]) {
- answ = std::min(answ, std::abs(x));
- }
- }
- std::cout << answ << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement