ABC412求助 C题
  • 板块学术版
  • 楼主mahaorui2012
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/6/28 21:51
  • 上次更新2025/6/29 16:44:52
查看原帖
ABC412求助 C题
923953
mahaorui2012楼主2025/6/28 21:51

不是哥们 我E题都做完了C题还没过:(

#include <iostream>
#include <algorithm>
using namespace std;

const int N=200005;

int n;
struct node{
	int val,id;
} arr[N];
bool cmp(const node& a,const node& b){
	if(a.val==b.val) return a.id>b.id;
	return a.val<b.val;
}

int main(){
	int t;
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=1;i<=n;++i){
			cin>>arr[i].val;
			arr[i].id=i;
		}if(arr[1].val>arr[n].val){
			cout<<"-1\n";
			continue; 
		}if(arr[1].val*2>=arr[n].val){
			cout<<"2\n";
			continue;
		}
		sort(arr+1,arr+n+1,cmp);
		int lst=1;
		while(arr[lst].id!=1){
			++lst;
		}
		//for(int i=1;i<=n;++i) cout<<arr[i].id<<' '<<arr[i].val<<'\n';
		int ans=2;
		arr[n+1].val=-1;
		for(int i=lst;i<=n;++i){
			if(arr[i+1].val>arr[lst].val*2){
				if(arr[i].val*2<arr[i+1].val){
					ans=-1;
					break;
				}else{
					lst=i;
					if(arr[i].id!=n) ++ans;
				}
			}if(arr[i].id==n){
				break;
			}
		}cout<<ans<<'\n';
	}
	return 0;
}

2025/6/28 21:51
加载中...