제출 #364832

#제출 시각아이디문제언어결과실행 시간메모리
364832amunduzbaevMaxcomp (info1cup18_maxcomp)C++14
100 / 100
199 ms146796 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define NeedForSpeed ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define int long long typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<ll> vll; typedef vector<int> vii; typedef vector<pll> vpll; typedef vector<pii> vpii; template<class T> bool umin(T& a, const T& b) {return a > b? a = b, true:false;} template<class T> bool umax(T& a, const T& b) {return a < b? a = b, true:false;} const int N = 2e3+5; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); #define MULTI 0 int n, m, k, ans, res, a[N][N]; int pp[N][N], ps[N][N], sp[N][N], ss[N][N]; void solve(int t_case){ cin>>n>>m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } res = -2; for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ pp[i][j] = -inf; ps[i][j] = -inf; sp[i][j] = -inf; ss[i][j] = -inf; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ pp[i][j] = -a[i][j] + i + j; if(i) umax(pp[i][j], pp[i-1][j]); if(j) umax(pp[i][j], pp[i][j-1]); } } for(int i=0;i<n;i++){ for(int j=m-1;j>=0;j--){ ps[i][j] = -a[i][j] + i - j; if(i) umax(ps[i][j], ps[i-1][j]); umax(ps[i][j], ps[i][j+1]); } } for(int i=n-1;i>=0;i--){ for(int j=0;j<m;j++){ sp[i][j] = -a[i][j] - i + j; umax(sp[i][j], sp[i+1][j]); if(j) umax(sp[i][j], sp[i][j-1]); } } for(int i=n-1;i>=0;i--){ for(int j=m-1;j>=0;j--){ ss[i][j] = -a[i][j] - i - j; umax(ss[i][j], ss[i+1][j]); umax(ss[i][j], ss[i][j+1]); } } //for(int i=0;i<n;i++){ //for(int j=0;j<m;j++){ //cout<<pp[i][j]<<" "; //} //cout<<"\n"; //} for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ int tt = a[i][j] + i + j -1; umax(res, tt + ss[i][j]); tt = a[i][j] + i - j-1, umax(res, tt + sp[i][j]); tt = a[i][j] - i + j-1, umax(res, tt + ps[i][j]); tt = a[i][j] - i - j-1, umax(res, tt + pp[i][j]); } } cout<<res<<"\n"; } signed main(){ NeedForSpeed if(!MULTI) { solve(1); } else { int t; cin>>t; for(int t_case = 1; t_case <= t; t_case++) solve(t_case); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...