关于#c++#的问题,如何解决?(优美的排列)

优美的数列
【试题描述】
小明同学最近喜欢上研究数列,他认为优美的数列应该长成下面这样子
A1<A2 <A3....Ak-1<AkAk+1....An-1>An譬如:125631是一个优美的数列;
123231不是一个优美的数列:
并且规定两端的也不可以为最大才是优美的数列,现在给你一个N个数列,判断这些
数列是不是优美的数列,如果是输出yes,否则输出no;

【输入格式】
第一行输入一个数N,表示有N个数列;
接下来有N行,每行若干个用空格隔开的正整数,每行以0结尾:

【输出格式】
输出包含N行,每行一个yes或者no1

【样例输入】
4
123210
1222210
543210
153210
【样例输出】
yes
no
no
yes
【数据范围】
对于20%的数:1<=N<=3,每行不包括行末的0为3个数,如:1310:
对于100%的数:1<=N<=10,每行不超过100个数,每个数小于等于10000:

#include <iostream>
#include <vector>

using namespace std;

bool check(const vector<int> &nums)
{
    if (nums.size() < 3)
        return false;
    if (nums[0] >= nums[1])
        return false;
    size_t n = nums.size();
    size_t i = 1;
    while (i < n - 1 && nums[i] < nums[i + 1])
        i++;
    if (i == n - 1)
        return false;
    while (i < n - 1 && nums[i] > nums[i + 1])
        i++;
    return i == n - 1;
}

int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        vector<int> nums;
        int a;
        while (cin >> a)
        {
            if (a == 0)
                break;
            nums.push_back(a);
        }
        if (check(nums))
            cout << "yes\n";
        else
            cout << "no\n";
    }
    return 0;
}