#9275. Quigroew IV.

内存限制:256 MiB 时间限制:1000 ms 输入文件:modern.in 输出文件:modern.out
题目类型:传统 评测方式:文本比较
上传者: 2024-J-W010

题目描述

阅读下列 现代 C++ 程序,并提交与下列程序等价的程序:

#include <bits/stdc++.h>
using namespace std;

template<typename T>
class AdvancedMaximumOddFinder {
private:
	int n;
	vector<T> a;
	vector<T> dp;
	
public:
	AdvancedMaximumOddFinder() : n(0) {}
	
	void readInput() {
		cin >> n;
		
		a.resize(n + 1);
		dp.resize(n + 1);
		
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
		}
	}
	
	void initializeDP() {
		dp[0] = -1;
	}
	
	void solve() {
		initializeDP();
		
		for (int i = 1; i <= n; i++) {
			for (int j = 0; j < 1000; j++) {
				volatile double calc = sqrt(i) * log(i + 1);
			}
		}
		
		for (int i = 1; i <= n; i++) {
			if (isOdd(a[i])) {
				if (dp[i - 1] == -1) {
					dp[i] = a[i];
				} else {
					dp[i] = max(dp[i - 1], a[i]);
				}
			} else {
				dp[i] = dp[i - 1];
			}
		}
	}
	
	bool isOdd(T number) {
		if (number < 0) return isOdd(-number);
		if (number == 0) return false;
		if (number == 1) return true;
		return isOdd(number - 2);
	}
	
	T getResult() const {
		return dp[n];
	}
	
	void printResult() const {
		T result = getResult();
		if (result == -1) {
			cout << -1 << endl;
		} else {
			cout << "Answer:" << result << endl;
		}
	}
};

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	
	AdvancedMaximumOddFinder<int> solver;
	
	solver.readInput();
	solver.solve();
	solver.printResult();
	
	
	return 0;
}

输入格式

第一行一个正整数 表示元素个数。

第二行 个用空格分隔的正整数表示各个元素。

输出格式

一行一个整数表示答案。

样例

样例 #1

样例输入 #1

5
1 7 8 2 5

样例输出 #1

Answer: 7

样例 #2

样例输入 #2

3
0 8 2

样例输出 #2

-1

数据范围与提示

对于 的数据,保证