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;
}