HZNUOJ 2126 刘老师的烦恼

原题链接:HZNUOJ--刘老师的烦恼icon-default.png?t=M85Bhttps://acm.hznu.edu.cn/OJ/problem.php?id=2126

Description

刘老师在一次课外活动中组织ACM队的同学玩老鹰抓小鸡的游戏。按照游戏的规则,母鸡身后的小鸡应该按照身高从矮到高的顺序排序。但是因为队员们每个人都想当“爸爸”,所以他们每个人都想让自己的位置尽可能的靠后。一通乱站队之后,面对高低不齐的队伍,刘老师十分的头疼,请你帮帮他找出队伍中有几个人所站的位置是“绝对正确位置”的。“绝对正确位置”的定义为,某人A左边的人都比他矮,且他的右边的人都比他高。

Input

第一行一个数字T,代表有T组数据

每组数据有两行输入

第一行有一个数字n(0<=n<=10^5),代表队伍里有几个人

第二行行有n个不同的正数,ni代表第i个人的身高

Output

对于每组数据

第一行输出在“绝对正确位置”上的人数

第二行按从低到高的顺序输出“绝对正确位置”上的人的身高

若人数为0,则第二行为空行

末尾不得有有多余的空格或回车

Samples

input Copy

1 5 1 3 2 4 5

output Copy

3 1 4 5

解题思路:水题,直接暴力就能过,我关了同步流加速了一下,直接printf和scanf应该也可以

ac代码:

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int b[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t;
    cin >> t;
    while (t--)
    {
    int n;
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        cin >> a[i];
    }
    int ans=0;
    int u=1;
    for (int i=1;i<=n;i++)
    {
        int bo1=0,bo2=0;
        for (int j=i+1;j<=n;j++) //判断右边有没有比当前的数小的
        {
            if(a[j]<=a[i])
            {
                bo1=1;
                break;
            }
        }
        for (int j=i-1;j>=1;j--)//判断左边有没有比当前的数大的
        {
            if(a[j]>=a[i])
            {
                bo2=1;
                break;
            }
        }
        if(!bo1 && !bo2) //没找到的话存进b数组,ans++
        {
            ans++;
            b[u]=a[i];
            u++;
        }
    }
    cout << ans << endl;
    for (int i=1;i<u;i++)
    {
        cout << b[i] << ' ';
    }
    cout << endl;
    }
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值