题意: 按顺序给出一排鱼的大小,大鱼可以吃掉左或右的小鱼,吃掉后自身变大 1 . 问鱼缸里是否有一条鱼经过不断的左右吞吃把其他所有鱼吃掉。(其他鱼不动) 如果有 输出任意一个即可。 题解: 只要有不同的必定有答案 比较俩数字寻找最大值即可 code:
#include<bits/stdc++.h> //#pragma GCC optimize(2) #define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增 #define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。 using namespace std; #define IOS ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0) #define ll long long #define ull unsigned long long #define ld long double #define PII pair<int,int> #define debug(a) cout <<#a << "=" << a << endl; const int INF = 0x3f3f3f3f; const ll LINF = 1ll<<60; const int mod=1e9+7; inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;} int main(){ int t; cin>>t; while(t--){ int n,a[300010]; memset(a,0,sizeof(a)); cin>>n; rep(i,1,n) { cin>>a[i]; } int maxn=a[1]; int pos=1,f=0; rep(i,2,n){ if(a[i]!=a[i-1]){ f=1; if(a[i]>a[i-1]&&a[i]>=maxn) pos=i,maxn=a[i]; else if(a[i-1]>a[i]&&a[i-1]>=maxn) pos=i-1,maxn=a[i-1]; } } if(f&&n!=1){ cout<<pos<<endl; } else cout<<-1<<endl; } return 0; }