Exemple #1
0
main()
{
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%lf", &height[i]);
    findLIS(n);
    findRLIS(n);

    int max = 0, peak;
    for (int i = 0; i < n; i++)
        if (max < LIS[i]+RLIS[i]) {
            max = LIS[i]+RLIS[i]; 
            peak = i;
        }

    int peakNum = 0;
    for (int i = peak+1; i < n; i++)
        if (height[i] == height[peak])
            peakNum++;

    if (peakNum)
        printf("%d\n", n-max);
    else if (!peakNum)
        printf("%d\n", n-max+1);
} 
int main() {
	int T, N, i;
	int A[2001], LDS[2001], LIS[2001], pos[2001];
	scanf("%d", &T);
	while(T--) {
		scanf("%d", &N);
		for(i = 0; i < N; i++)
			scanf("%d", &A[N-i-1]);
		findLIS(N, LIS, pos, A);
		findLDS(N, LDS, pos, A);
		int max = 0;
		for(i = 0; i < N; i++) {
			if(LIS[i]+LDS[i]-1 > max) 
				max = LIS[i]+LDS[i]-1;
		}
		printf("%d\n", max);
	}
    return 0;
}