제출 #1174435

#제출 시각아이디문제언어결과실행 시간메모리
1174435guagua0407Maxcomp (info1cup18_maxcomp)C++20
60 / 100
560 ms4832 KiB
//#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define f first #define s second #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } const int mxn=1e3+5; const ll inf=(ll)1e18; vector<vector<ll>> st(mxn*4,vector<ll>(2,-inf)); void update(int id,int pos,ll val,int l=0,int r=mxn-1,int v=1){ if(l==r){ st[v][id]=max(st[v][id],val); return; } int mid=(l+r)/2; if(pos<=mid) update(id,pos,val,l,mid,v*2); else update(id,pos,val,mid+1,r,v*2+1); st[v][id]=max(st[v*2][id],st[v*2+1][id]); } ll query(int id,int tl,int tr,int l=0,int r=mxn-1,int v=1){ if(r<tl or tr<l){ return -inf; } if(tl<=l and r<=tr){ return st[v][id]; } int mid=(l+r)/2; return max(query(id,tl,min(mid,tr),l,mid,v*2),query(id,max(mid+1,tl),tr,mid+1,r,v*2+1)); } int main() {_ int n,m; cin>>n>>m; vector<vector<int>> a(n,vector<int>(m)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } ll ans=-1; auto go=[&](){ st=vector<vector<ll>>(mxn*4,vector<ll>(2,-inf)); for(int j=0;j<m;j++){ for(int i=0;i<n;i++){ update(0,i,-a[i][j]+i+j); update(1,i,-a[i][j]-i+j); } for(int i=0;i<n;i++){ //cout<<a[i][j]<<' '<<query(0,0,i)<<' '<<query(1,i,n-1)<<'\n'; ans=max({ans,a[i][j]-i-j+query(0,0,i)-1,a[i][j]+i-j+query(1,i,n-1)-1}); } } }; for(int t=0;t<2;t++){ go(); for(int i=0;i<n;i++){ reverse(all(a[i])); } } cout<<ans<<'\n'; return 0; } //maybe its multiset not set //yeeorz //diaoborz

컴파일 시 표준 에러 (stderr) 메시지

maxcomp.cpp: In function 'void setIO(std::string)':
maxcomp.cpp:15:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
maxcomp.cpp:16:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...