测试点3过不去,输出格式不对,知道为什么吗?最后没回车
思路是这样的,
第一次循环输入,并找到当前节点前面的最大值。
第二次循环找到当前节点右边的最小值
第三次循环,输出主元
`#include
#include
#include
using namespace std;
int main()
{
int N,a[10010],LeftMax[100010],RightMin[100010];//LeftMax数组用于记录当前左边最大数,RightMin数组用于记录当前右边最小数
scanf("%d", &N);
int big=-1,small=9999999999;
for (int i = 1; i <=N; i++) {
scanf("%d", &a[i]);
if (i == 1) {
LeftMax[1] = a[1] - 1;
continue;
}
if (a[i] > big) {
LeftMax[i + 1] = a[i];
big = a[i];
}
else LeftMax[i + 1] = LeftMax[i];
}
RightMin[N] = a[N]+1;
for (int i = N ; i >= 1; i--) {
if (a[i] < small) {
RightMin[i - 1] = a[i];
small = a[i];
}
else RightMin[i - 1] = RightMin[i];
}
vector<int> v;
for (int i = 1; i <=N ; i++) {
if (a[i]<=RightMin[i]&&a[i]>=LeftMax[i] ) {
v.push_back(a[i]);
}
}
printf("%d\n",v.size());
sort(v.begin(), v.end());
int flag = 1;
for (int i = 0; i < v.size(); i++) {
if (flag) {
printf("%d", v[i]);
flag = 0;
}
else {
printf(" %d", v[i]);
}
}
printf("\n");
return 0;
}`
测试点3过不去,输出格式不对,知道为什么吗?最后没回车
思路是这样的,
第一次循环输入,并找到当前节点前面的最大值。
第二次循环找到当前节点右边的最小值
第三次循环,输出主元
`#include
#include
#include
using namespace std;
int main()
{
int N,a[10010],LeftMax[100010],RightMin[100010];//LeftMax数组用于记录当前左边最大数,RightMin数组用于记录当前右边最小数
scanf("%d", &N);
int big=-1,small=9999999999;
}`