20251003 baekjoon
This commit is contained in:
parent
2b46e3d9a6
commit
d4d8c22ef2
56
code_study/Baekjoon/c/11054.c
Normal file
56
code_study/Baekjoon/c/11054.c
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
void freeAll(int* a, int* b, int* c, int* d, int* e) {
|
||||||
|
free(a); free(b); free(c); free(d); free(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
int max(int a, int b) {
|
||||||
|
return a>b ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
int maxInArr(int* arr, int N) {
|
||||||
|
int maxNum = 0;
|
||||||
|
for(int i=0; i<N; i++) maxNum = max(maxNum, arr[i]);
|
||||||
|
|
||||||
|
return maxNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int N;
|
||||||
|
scanf("%d",&N);
|
||||||
|
|
||||||
|
int* arr = (int*)malloc(sizeof(int)*N);
|
||||||
|
int* arrR = (int*)malloc(sizeof(int)*N);
|
||||||
|
for(int i=0; i<N; i++) {
|
||||||
|
int num;
|
||||||
|
scanf("%d",&num);
|
||||||
|
arr[i] = num;
|
||||||
|
arrR[N-i-1] = num;
|
||||||
|
}
|
||||||
|
|
||||||
|
int* dp = (int*)malloc(sizeof(int)*N);
|
||||||
|
int* dpR = (int*)malloc(sizeof(int)*N);
|
||||||
|
|
||||||
|
for(int i=0; i<N; i++) {
|
||||||
|
dp[i] = 1;
|
||||||
|
dpR[i] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0; i<N; i++) {
|
||||||
|
for(int j=0; j<i; j++) {
|
||||||
|
if(arr[i] > arr[j]) dp[i] = max(dp[i], dp[j]+1);
|
||||||
|
if(arrR[i] > arrR[j]) dpR[i] = max(dpR[i], dpR[j]+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int* length = (int*)malloc(sizeof(int)*N);
|
||||||
|
|
||||||
|
for(int i=0; i<N; i++) length[i] = dp[i] + dpR[N-1-i] - 1;
|
||||||
|
|
||||||
|
printf("%d\n", maxInArr(length, N));
|
||||||
|
|
||||||
|
freeAll(arr, arrR, dp, dpR, length);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user