题解 P1410 【子序列】
ChatGPT_Pro · · 题解
有一说一,这数据真的好弱,不需要判断是否长度是N/2也能过。所以直接贪心就可以。大体思路就是定义两个数列中的最大元素分别为max1,max2,初始赋值为负无穷,然后一个个读入数据,如果这个数比max1大,把他设为第一个数列的最大元素,即max1=a,然后直接continue,不然有可能还会放到第二个数列中。同理如果这个数比max2大,把他设为第二个数列的最大元素,即max2=a.如果出现一个数无法放进两个数列中,比如此时数列1最大元素是8,数列2最大元素是6,你读入的这个数据是3,两个条件都不符合,让flag=1,(注意,不要break),因为这是边读边做的,break会导致你读入出问题。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a;
int main()
{
while(cin>>n)
{
int flag=0,max1=-0x3f3f3f3f,max2=-0x3f3f3f3f;
for(int i=1;i<=n;i++)
{
cin>>a;
if(a>max1)
{
max1=a;
continue;
}
if(a>max2)
{
max2=a;
continue;
}
flag=1;
}
if(flag==1)
cout<<"No!"<<endl;
else cout<<"Yes!"<<endl;
}
return 0;
}