# Greedy# Iteration# Conditional Logic

e533 - 11942 - Lumberjack Sequencing

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷給定的 10 個整數序列是否為遞增或遞減序列。如果序列是遞增或遞減的,則輸出 "Ordered",否則輸出 "Unordered"。

解題思路

程式碼首先讀取測試案例的數量。對於每個測試案例,它讀取 10 個整數。程式碼會檢查序列是否為遞增或遞減。它首先讀取前兩個數字,並確定序列應該是遞增還是遞減。然後,它迭代剩餘的數字,並檢查它們是否符合預期的順序。如果找到任何不符合順序的數字,則將 ans 標記為 true。最後,如果 ansfalse,則輸出 "Ordered",否則輸出 "Unordered"。

複雜度分析

  • 時間複雜度: O(n),其中 n 是輸入序列的長度 (在本例中為 10)。程式碼迭代序列一次。
  • 空間複雜度: O(1)。程式碼使用固定數量的變數,與輸入大小無關。

程式碼

#include <iostream>
using namespace std;
int main(){
	int c,a0,a1;
	cin >> c;
	cout << "Lumberjacks:\n";
	while(c--){
		int t=8;
		bool ans=0,way=0;
		cin >> a0 >> a1;
		if(a1>a0){
			way=1;
			a0=a1;
		}
		while(t--){
			cin >> a1;
			if(way){ 
				if(a1<a0)ans=1;
			} 
			else
				if(a1>a0)ans=1;
			a0=a1;
		}
		if(!ans)
			cout << "Ordered\n";
		else
			cout << "Unordered\n";
	}
}

Discussion