0
已解决
张皓然
中级光能
中级光能
4216 数组拆分
经验值:1600
时间限制:1000毫秒
内存限制:128MB
题目描述 De**ion
现在给出一个整数数组,现在要求将这个数组从中间某个位置分成两个部分。要求分成两部分之后,左半部分数组的最大值要小于等于右半部分数组的最小值。求出左半部分数组的最少的元素个数。
输入描述 Input De**ion
第一行,一个整数n,表示数组的长度
第二行,n个正整数
输出描述 Output De**ion
满足条件的左半部分数组的最小长度
样例输入 Sample Input
5 1 2 3 4 5
样例输出 Sample Output
1
数据范围及提示 Data Size & Hint
n≤10000
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10005];
int minn=10005;
int maxx[10005];
int minx[10005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=n;i>=1;i--){
if(i==n)
maxx[i]=a[i];
else
maxx[i]=max(maxx[i+1],a[i]);
}
for(int i=1;i<=n;i++){
if(i==1)
minx[i]=a[i];
else
minx[i]=min(minx[i-1],a[i]);
}
for(int i=1;i<n;i++){
if(maxx[i]<=minx[i+1]);
minn=min(minn,i);
// cout<<cnt<<" "<<minn<<"\n";
}
cout<<minn;
return 0;
}
急救!!!急救!!!
70豆子不成敬意