上代码
#include<bits/stdc++.h>
#define gc getchar()
#define ll long long
#define For(i,j,k) for(register int i = j; i <= k; i++)
#define foR(i,j,k) for(register int i = j; i >= k; i--)
#define mp(i,j) makenpair(i,j)
#define re register
#define il inline
using namespace std;
inline int read(){
int x = 0;
char ch = gc;
while(!isdigit(ch)) ch =gc;
while(isdigit(ch)) x = (x<<1)+(x<<3)+(ch^48),ch = gc;
return x;
}
int n,a[101],d[101],len,maxx;
struct jj{
int l,r,sum;
}na[101];
int main(){
n = read();
For(i,1,n) a[i] = read();
d[1] = a[1];
len = 1;
For(i,2,n){
if(d[len] < a[i]) d[++len] = a[i];
else{
int k = lower_bound(d+1, d+len+1,a[i]) - d;
d[k] = a[i];
}
na[i].l = len;
}
len = 1;
d[1] = a[n];
foR(i,n-1,1){
if(d[len] < a[i]) d[++len] = a[i];
else{
int k = lower_bound(d+1, d+len+1,a[i]) - d;
d[k] = a[i];
}
na[i].r = len;
}
For(i,1,n){
na[i].sum = na[i].l + na[i].r -1;
maxx = max(maxx, na[i].sum);
}
cout<< n - maxx;
return 0;
}
测试数据
20
130 140 150 160 170 180 190 200 210 220 221 222 223 224 225 226 227 228 229 230
应为0,我却跑的1。。。。。 哪来的1??