Submission

Status:

-----P--PP

Subtask/Task Score:

30/100

Score: 30

User: lingusso

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-04-10 16:14:08

#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=min,maxt=max;
	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]-b<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]+b>maxt){
				maxt = arr[i][j];
			}
		}
	}
	if(r < maxt+b - min && max!=maxt){
		r = maxt - min + 2*b;
	}
	//cout<<maxt<<"\n";
	cout<<r;
	return 0;
}