Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
112110 | 蒋沛霖 | 合唱队形 | C++ | 通过 | 100 | 0 MS | 196 KB | 700 | 2023-11-25 10:29:44 |
#include <stdio.h> #include <string.h> int hei[101],ldp[101],rdp[101]; int main() { int n; while (scanf("%d",&n)!=EOF) { if(n==-1) break; int i; memset(ldp,0,sizeof(ldp)); for (i=1;i<=n;i++) { scanf("%d",&hei[i]); ldp[i]=1; } int j; for (i=1;i<=n;i++) { for (j=i-1;j>=0;j--) { if (hei[j]<hei[i]&&ldp[i]<ldp[j]+1) { ldp[i]=ldp[j]+1; } } } memset(rdp,0,sizeof(rdp)); for (i=1;i<=n;i++) { rdp[i]=1; } for (i=n;i>=1;i--) { for (j=i+1;j<=n;j++) { if (hei[j]<hei[i]&&rdp[i]<rdp[j]+1) { rdp[i]=rdp[j]+1; } } } int max=0; for (i=1;i<=n;i++) { if (rdp[i]+ldp[i]>max) { max=rdp[i]+ldp[i]; } } max--; printf("%d\n",n-max); } return 0; }