Min Max

0002

ปัญหาของข้อนี้คือ ให้เลขมา nn ตัวแล้วให้หาค่ามากสุดและค่าน้อยสุดโดยที่เริ่มแรกจะสร้างตัวแปร minvalue\text{min}_{\text{value}} และ maxvalue\text{max}_{\text{value}} เพื่อเก็บค่าน้อยสุดและมากสุดตามลำดับ

เราวนลูปไล่เลขทุกตัว เมื่อเจอตัวเลข ๆ นึงก็ทำการ update ค่า minvalue\text{min}_{\text{value}} และ maxvalue\text{max}_{\text{value}} ตามค่าที่เจอเพื่อให้ minvalue\text{min}_{\text{value}} และ maxvalue\text{max}_{\text{value}} เป็นค่าน้อยสุดและมากสุดที่เจอตั้งแต่ตัวเลขตัวแรกจนถึงตัวล่าสุดที่ลูปมาคำนวน

วิธีการคือเมื่อเจอตัวเลข xx ที่น้อยกว่าค่าน้อยที่สุดที่เก็บไว้ (minvalue\text{min}_{\text{value}}) เราจะอัพเดทค่าน้อยสุดเป็น xx และถ้าเจอ xx ที่มากกว่าค่ามากสุดที่เก็บไว้ เราจะอัพเดทค่ามากสุดเป็น xx

เราสามารถเริ่มเซ็ตค่า minvalue\text{min}_{\text{value}} และ maxvalue\text{max}_{\text{value}} เป็นตัวเลขแรกที่ได้รับ และวนลูปสำหรับตัวเลขที่เหลือ

จะได้ตามโค้ดตัวอย่างนี้

#include<bits/stdc++.h>	
using namespace std;	
int main(){	
  int n, first_number; 
  cin >> n >> first_number;	 
  int min_value = first_number, max_value = first_number;	  
	  
  for (int i = 2; i <= n; i++) {	    
    int x; cin >> x;	    
    if (x < min_value) min_value = x;	 // หรือ min_value = min(x, min_value)
    if (x > max_value) max_value = x;	 // หรือ max_value = max(x, max_value)
  }	  	  
  cout << m << endl << M << endl;	  
  return 0;	
}