題目會給你一連串的高樓的高與寬
你要找出以高嚴格升序與嚴格降序的所有組合中,最寬的數字,並比較嚴格升序與嚴格降序哪個比較寬,輸出相對應格式的結果
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
for (int t = 1; t <= T; t++) {
int n;
cin >> n;
int h[n], w[n];
for (int i = 0; i < n; i++) {
cin >> h[i];
}
for (int i = 0; i < n; i++) {
cin >> w[i];
}
int lis[n];
int lds[n];
for (int i = 0; i < n; i++) {
lis[i] = w[i];
lds[i] = w[i];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (h[j] < h[i]) {
lis[i] = max(lis[i], lis[j] + w[i]);
}
if (h[j] > h[i]) {
lds[i] = max(lds[i], lds[j] + w[i]);
}
}
}
int max_i = 0;
int max_d = 0;
for (int i = 0; i < n; i++) {
max_i = max(max_i, lis[i]);
max_d = max(max_d, lds[i]);
}
cout << "Case " << t << ". ";
if (max_i >= max_d) {
cout << "Increasing (" << max_i << "). Decreasing (" << max_d << ").";
} else {
cout << "Decreasing (" << max_d << "). Increasing (" << max_i << ").";
}
cout << endl;
}
return 0;
}