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;
}