Advertisement
Guest User

GUCCI

a guest
Jan 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 200000;
  4. int n;
  5. void go(vector <vector <int>> &a) {
  6.     for (int i = 1; i <= n; i++) {
  7.         for (int j = 1; j <= i; j++) {
  8.             if (!a[i][j]) {
  9.                 if (a[i + 1][j + 1] && a[i + 1][j])
  10.                     a[i][j] = a[i + 1][j + 1] + a[i + 1][j];
  11.                 if (a[i - 1][j - 1] && a[i][j - 1])
  12.                     a[i][j] = a[i - 1][j - 1] - a[i][j - 1];
  13.                 if (a[i - 1][j] && a[i][j + 1])
  14.                     a[i][j] = a[i - 1][j] - a[i][j + 1];
  15.             }
  16.         }
  17.     }
  18. }
  19. bool chk(vector <vector <int>> &a) {
  20.     for (int i = 1; i < n; i++) {
  21.         for (int j = 1; j <= i; j++) {
  22.             if (a[i][j] != a[i + 1][j] + a[i + 1][j + 1]) {
  23.                 return false;
  24.             }
  25.         }
  26.     }
  27.     return true;
  28. }
  29. int main() {
  30.     cin >> n;
  31.     vector <vector <int>> a(n + 2, vector <int> (n + 2, 0));
  32.     for (int i = 1; i <= n; i++) {
  33.         for (int j = 1; j <= i; j++) {
  34.             cin >> a[i][j];
  35.         }
  36.     }
  37.     for (int c = 0; c < n; c++) {
  38.         go(a);
  39.     }
  40.     vector <pair <int, int>> p;
  41.     for (int i = 1; i <= n; i++) {
  42.         for (int j = 1; j <= i; j++) {
  43.             if (i < n && a[i][j] != a[i + 1][j] + a[i + 1][j + 1] && !a[i][j]) {
  44.                 p.push_back({i, j});
  45.             }
  46.             if (i > 1 && j < i && a[i][j] != a[i - 1][j] - a[i][j + 1] && !a[i][j]) {
  47.                 p.push_back({i, j});
  48.             }
  49.             if (i > 1 && j > 1 && a[i][j] != a[i - 1][j - 1] - a[i][j - 1] && !a[i][j]) {
  50.                 p.push_back({i, j});
  51.             }
  52.         }
  53.     }
  54.     bool fl = false;
  55.     vector <vector <int>> temp = a;
  56.     for (int i = 0; !fl && i < p.size(); i++) {
  57.         pair <int, int> cur = p[i];
  58.         for (int c = -10000; c <= 10000; c++) {
  59.             a[cur.first][cur.second] = c;
  60.             go(a);
  61.             if (chk(a)) {
  62.                 fl = true;
  63.                 break;
  64.             }
  65.             a = temp;
  66.         }
  67.     }
  68.     if (!p.empty()) {
  69.         assert(fl == true);
  70.     }
  71.     for (int i = 1; i <= n; i++) {
  72.         for (int j = 1; j <= i; j++) {
  73.             cout << a[i][j] << ' ';
  74.         }
  75.         cout << '\n';
  76.     }
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement