Submission

Status:

PPP-PPP-PP

Subtask/Task Score:

80/100

Score: 80

User: lingusso

Problemset: สูงต่ำในตาราง

Language: cpp

Time: 0.003 second

Submitted On: 2026-04-10 16:40:05

#include<iostream>

using namespace std;
int main(){
	int n,b;
	cin>>n>>b;
	int arr[n][n],max=0,min,maxid,minid=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>arr[i][j];
			if(i==0 && j==0){
				min = arr[i][j];
			}
			if(arr[i][j]>max){
				max = arr[i][j];
				maxid = i;
			}
			if(arr[i][j]<min){
				min = arr[i][j];
				minid = i;
			}
		}
	}
	//cout<<maxid<<minid;
	if(maxid != minid){
		//cout<<min<<" "<<max<<"\n";
		cout<<max-min+2*b;
		return 0;
	}
	int mint=2e9,maxt=-2e9;
	int r = max - min;
	//cout<<r;
	for(int i=0;i<n;i++){
		if(i == minid){
			continue;
		}
		for(int j=0;j<n;j++){
			if(arr[i][j]<mint){
				mint = arr[i][j];
			}
		}
	}
	//cout<<mint<<"\n";
	if(max - mint + 2*b > r && min!=mint){
		r = max - mint + 2*b;
	}
	for(int i=0;i<n;i++){
		if(i == maxid){
			continue;
		}
		for(int j=0;j<n;j++){
			if(arr[i][j]>maxt){
				maxt = arr[i][j];
			}
		}
	}
	if(r < maxt+b - min && max!=maxt){
		r = maxt - min + 2*b;
	}
	//cout<<maxt<<"\n";
	cout<<r;
	return 0;
}