乱搞
特判三种情况:
①:a[i-3]>=a[i-1]&&a[i]>=a[i-2]
②:a[i-3]>=a[i-1]&&a[i-3]<=a[i-1]+a[i-5]&&a[i-2]>=a[i-4]&&a[i]+a[i-4]>=a[i-2]
③:x3==x1&&x2<=a[i]+x4
扫一遍就好啦!
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#define MAXN 1000000
using namespace std;
int a[MAXN+5];
int t,n;
int main(){
scanf("%d",&t);
while (t--){
scanf("%d",&n);
memset(a,0,sizeof(a));
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
bool flag=false;
for (int i=4;i<=n;i++){
int x1=a[i-1],x2=a[i-2],x3=a[i-3];
if (x3>=x1&&a[i]>=x2){
printf("%d\n",i);
flag=true;
break;
}
if (i>=5){
int x4=a[i-4];
if (x3==x1&&x2<=a[i]+x4){
flag=true;
printf("%d\n",i);
break;
}
}
if (i>=6){
int x4=a[i-4],x5=a[i-5];
if (x3>=x1&&x3<=x1+x5&&x2>=x4&&a[i]+x4>=x2){
printf("%d\n",i);
flag=true;
break;
}
}
}
if (!flag)
printf("Catch you\n");
}
return 0;
}