VioletaBabel
11054번: 가장 긴 바이토닉 부분 수열 본문
#include<cstdio>
#include<algorithm>
#define max(a,b) (a>b)?a:b
int a[1000], ans1[1000], ans2[1000];
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%d", &a[i]);
std::fill_n(&ans1[0], 1000, 1);
std::fill_n(&ans2[0], 1000, 1);
for (int i = 1; i < n; ++i)
for (int j = i - 1; j > -1; --j)
if (a[i] > a[j])
ans1[i] = max(ans1[i], ans1[j] + 1);
for(int i = n-2; i > -1; --i)
for(int j = i+1; j < n; ++j)
if (a[i] > a[j])
ans2[i] = max(ans2[i], ans2[j] + 1);
for (int i = 0; i < n; ++i)
ans1[i] = ans1[i] + ans2[i] - 1;
printf("%d", *(std::max_element(&ans1[0], &ans1[n])));
}
'백준 > 백준-C++' 카테고리의 다른 글
11399번: ATM (0) | 2017.06.13 |
---|---|
1912번: 연속합 (0) | 2017.06.12 |
11722번: 가장 긴 감소하는 부분 수열 (0) | 2017.06.12 |
11055번: 가장 큰 증가 부분 수열 (0) | 2017.06.12 |
11053번: 가장 긴 증가하는 부분 수열 (0) | 2017.06.12 |
Comments