#include //#include #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; //using namespace atcoder; typedef long long ll; typedef unsigned long long ull; #define rep(i,N) for(int i=0;i<(N);++i) #define rrep(i,N) for(int i=(N)-1;i>=0;--i) #define all(A) A.begin(),A.end() using vvi = vector>; using P = pair; templatebool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; } templatebool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; } template void YesNo(T flg){ cout << (flg? "Yes\n" : "No\n"); } //時間管理 const double TimeLimit=1780; std::chrono::system_clock::time_point start; std::chrono::system_clock::time_point finish; inline void TimerStart(){ start=finish=chrono::system_clock::now(); } inline void TimerUpdate(){ finish=chrono::system_clock::now(); } double TimeDist(){ return chrono::duration_cast(finish-start).count(); } random_device rnd; mt19937 mt(rnd()); default_random_engine eng(rnd()); int NextInt(int minval,int maxval) { uniform_int_distribution distr(minval,maxval); return distr(mt); } vector>> cross; const ll Mod=1e8; namespace Input{ int N; vector> A; void Init(){ cin >> N; A.resize(N); rep(i,N){ rep(j,i+1){ ll a;cin >> a; A[i].push_back(a); } } cross.resize(N,vector>(N,vector(N,0))); rep(i,N){ cross[i][N-1][i]=1; rrep(j,N){ rep(k,j+1){ cross[i][j][k]%=Mod; if(k> pyramid; vector> dist; ll maxDist; void Init(){ N=Input::N; pyramid.resize(N,vector(N,0)); dist.resize(N,vector(N,0)); rep(i,N){ pyramid[N-1][i]=Input::A[N-1][i]; } for(int i=N-1;i>0;--i){ rep(j,i+1){ if(j bestAns; void Init(){ N=Input::N; pyramid.Init(); bestScore=pyramid.maxDist; bestAns=pyramid.pyramid[N-1]; } void Solve(){ TimerStart(); while(TimeDist()