//#pragma GCC optimize("Ofast") //#pragma GCC optimize "O3,omit-frame-pointer,inline" #include // cout, endl, cin #include // string, to_string, stoi #include // vector #include // min, max, swap, sort, reverse, lower_bound, upper_bound #include // pair, make_pair #include // tuple, make_tuple #include // int64_t, int*_t #include // printf #include // map #include // queue, priority_queue #include // set #include // stack #include // deque #include // unordered_map #include // unordered_set #include // bitset #include // isupper, islower, isdigit, toupper, tolower #include //fixed,setprecision #include //INT_MAX #include //M_PI #include #include // 正規表現 #include #include #include #include #include #include #include #include //複素数 //#include using namespace std; #include using namespace atcoder; //using mint = modint998244353; using ll = long long; using ull = unsigned long long; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) const int dx[4] = {0, 1, 0, -1}; const int dy[4] = {1, 0, -1, 0}; random_device rnd; mt19937 mt_gen(rnd()); int RandInt(int a, int b) { return a + mt_gen() % (b - a + 1); } const ll MOD=100000000; const int MAX = 100000000; // スコア計算 int score_function(int N, vector> A, vector C) { vector> B(N, vector(N, 0)); for (int i = 0; i < N; i++) B[N - 1][i] = C[i]; for (int i = N - 2; i >= 0; i--) { for (int j = 0; j <= i; j++) B[i][j] = (B[i + 1][j] + B[i + 1][j + 1]) % MAX; } int max_error = 0; for (int i = 0; i < N; i++) { for (int j = 0; j <= i; j++) max_error = max(max_error, min(abs(A[i][j] - B[i][j]), MAX - abs(A[i][j] - B[i][j]))); } return MAX / 2 - max_error; } int main() { // 入力 int N; cin >> N; vector> A(N, vector(N, 0)); for (int i = 0; i < N; i++) { for (int j = 0; j <= i; j++) cin >> A[i][j]; } double timeLimit = 1.8; // 1.8秒 auto t0 = chrono::steady_clock::now(); vector C(N, 0); ll best_score=0; vector best_C(N,0); while (true) { double elapsed = chrono::duration(chrono::steady_clock::now() - t0).count(); if (elapsed > timeLimit) break; rep(i,N) C[i]=RandInt(0,MAX-1); int score=score_function(N,A,C); if(score>best_score){ best_score=score; best_C=C; } } cerr<= 1) cout << " "; cout<