RT,写了一个贪心过了所有数据,但听说这题数据水,作为萌新我无法确定正确性(ORZ),自己也没hack成,请各位大佬帮帮忙。
思路:维护两个序列(就是两个数),分别表示两个序列的最后一个数(最大值),优先加入第一个队列,若加不进去就加到第二个队列,否则No。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,a[N],s,t;
int main()
{
while(scanf("%d", &n)!=EOF)
{
for(int i=1; i<=n; i++) scanf("%d", &a[i]);
bool fg=1;
s=t=-1;
for(int i=1; i<=n; i++)
{
if(a[i]>s) s=a[i];
else if(a[i]>t) t=a[i];
else
{
fg=0;
break;
}
}
if(fg) puts("Yes!");
else puts("No!");
}
return 0;
}