# Greedy# Sorting# Conditional Logic

e614 - 11936 - The Lazy Lumberjacks

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷給定的三條邊長是否能構成一個三角形。如果能構成,輸出 "OK",否則輸出 "Wrong!!"。

解題思路

三角形的判斷條件是:任意兩邊之和必須大於第三邊。因此,解題思路是先將三條邊長排序,然後判斷最大的邊長是否小於其他兩邊之和。如果滿足條件,則可以構成三角形,輸出 "OK",否則輸出 "Wrong!!"。

複雜度分析

  • 時間複雜度: O(n log n),其中 n 是輸入的組數。因為每次輸入都需要進行排序,排序的時間複雜度是 O(log n)。
  • 空間複雜度: O(1),因為只使用了固定大小的陣列來儲存三條邊長。

程式碼

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	long long int a[3];
	cin >> a[0];
	while(cin >> a[0] >> a[1] >> a[2]){
		sort(a,a+3);
		(a[0]+a[1]>a[2])?cout << "OK\n":cout << "Wrong!!\n";
	}
}

Discussion