Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MAXN = 200000;
- int n;
- void go(vector <vector <int>> &a) {
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= i; j++) {
- if (!a[i][j]) {
- if (a[i + 1][j + 1] && a[i + 1][j])
- a[i][j] = a[i + 1][j + 1] + a[i + 1][j];
- if (a[i - 1][j - 1] && a[i][j - 1])
- a[i][j] = a[i - 1][j - 1] - a[i][j - 1];
- if (a[i - 1][j] && a[i][j + 1])
- a[i][j] = a[i - 1][j] - a[i][j + 1];
- }
- }
- }
- }
- bool chk(vector <vector <int>> &a) {
- for (int i = 1; i < n; i++) {
- for (int j = 1; j <= i; j++) {
- if (a[i][j] != a[i + 1][j] + a[i + 1][j + 1]) {
- return false;
- }
- }
- }
- return true;
- }
- int main() {
- cin >> n;
- vector <vector <int>> a(n + 2, vector <int> (n + 2, 0));
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= i; j++) {
- cin >> a[i][j];
- }
- }
- for (int c = 0; c < n; c++) {
- go(a);
- }
- vector <pair <int, int>> p;
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= i; j++) {
- if (i < n && a[i][j] != a[i + 1][j] + a[i + 1][j + 1] && !a[i][j]) {
- p.push_back({i, j});
- }
- if (i > 1 && j < i && a[i][j] != a[i - 1][j] - a[i][j + 1] && !a[i][j]) {
- p.push_back({i, j});
- }
- if (i > 1 && j > 1 && a[i][j] != a[i - 1][j - 1] - a[i][j - 1] && !a[i][j]) {
- p.push_back({i, j});
- }
- }
- }
- bool fl = false;
- vector <vector <int>> temp = a;
- for (int i = 0; !fl && i < p.size(); i++) {
- pair <int, int> cur = p[i];
- for (int c = -10000; c <= 10000; c++) {
- a[cur.first][cur.second] = c;
- go(a);
- if (chk(a)) {
- fl = true;
- break;
- }
- a = temp;
- }
- }
- if (!p.empty()) {
- assert(fl == true);
- }
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= i; j++) {
- cout << a[i][j] << ' ';
- }
- cout << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement