VioletaBabel

11054번: 가장 긴 바이토닉 부분 수열 본문

백준/백준-C++
11054번: 가장 긴 바이토닉 부분 수열
Beabletoet 2017. 6. 12. 15:13

#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