Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
141519 | 冼俊烨 | 合唱团 | C++ | 通过 | 100 | 0 MS | 252 KB | 590 | 2024-04-05 16:50:39 |
//合唱团 //正反LIS后寻找最值 #include<bits/stdc++.h> using namespace std; int T[201]; int f[201],g[201]; int main() { int n; scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&T[i]); for(int i=1; i<=n; i++) { f[i]=1; for(int j=1; j<=i-1; j++) if(T[j]<T[i]&&f[j]+1>f[i]) f[i]=f[j]+1; } for(int i=n; i>=1; i--) { g[i]=1; for(int j=i+1; j<=n; j++) if(T[j]<T[i]&&g[j]+1>g[i]) g[i]=g[j]+1; } int Min=n; for(int k=1; k<=n; k++) Min=min(n-f[k]-g[k]+1,Min); printf("%d\n",Min); }