Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Some1258
Problemset: สูงต่ำในตาราง
Language: cpp
Time: 0.003 second
Submitted On: 2026-06-30 16:32:56
#include<bits/stdc++.h>
using namespace std;
int main(){
long long N,B;
cin>>N>>B;
vector<long long> rowmax(N), rowmin(N);
for(int i=0;i<N;i++){
long long x;
cin>>x;
rowmax[i]=rowmin[i]=x;
for(int j=1;j<N;j++){
cin>>x;
rowmax[i]=max(rowmax[i],x);
rowmin[i]=min(rowmin[i],x);
}
}
long long ans=0;
for(int i=0;i<N;i++){
ans=max(ans,rowmax[i]-rowmin[i]);
}
long long min1 = LLONG_MAX, min2= LLONG_MAX;
int idxmin1=-1;
for(int i=0;i<N;i++){
if(rowmin[i]<min1){
min2=min1;
min1=rowmin[i];
idxmin1=i;
}else if(rowmin[i]<min2){
min2=rowmin[i];
}
}
for(int i=0;i<N;i++){
long long bestminother;
if(idxmin1!=i){
bestminother=min1;
}else{
bestminother=min2;
}
if(bestminother!=LLONG_MAX){
ans=max(ans, rowmax[i]-bestminother+2*B);
}
}
cout<<ans;
}