L2-045 堆宝塔

纯模拟。

#include <bits/stdc++.h>
using namespace std;
int cnt = 0,maxlen=0;
int main() {
	vector<int> a, b;
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int ch;
		cin >> ch;
		if (a.empty()) {
			a.push_back(ch);
		}
		else if (a.back() > ch) {
			a.push_back(ch);
		}
		else if (b.empty()) {
			b.push_back(ch);
		}
		else if (b.back() < ch) {
			b.push_back(ch);
		}
		else {//将A的摘下来作为成品
			cnt++;
			maxlen = max(maxlen, (int)a.size());
			a.clear();
			while (!b.empty() && b.back() > ch) {
				a.push_back(b.back());
				b.pop_back();
			}
			a.push_back(ch);
		}
	}
	if (!a.empty()) {
		cnt++;
		maxlen = max(maxlen, (int)a.size());
	}
	if (!b.empty()) {
		cnt++;
		maxlen = max(maxlen, (int)b.size());
	}
	cout << cnt << " " << maxlen;
	return 0;
}
posted @ 2024-03-28 15:20  YuKiCheng  阅读(72)  评论(0编辑  收藏  举报