CF1178A 题解

发布时间 2023-07-20 10:19:17作者: ZnHF

题目链接

题意简述

\(n\) 个政党参加了选举,每个政党获得了 \(a_{i}\) 张选票,Alice 的政党是一号政党,她需要与其他政党组成一个联盟,满足以下条件:

  1. 联盟中的总票数必须严格大于总票数。

  2. 她的政党获得的票数必须大于联盟中任意一个政党获得的票数。

题目分析

一道挺简单的题,模拟题意即可。需要注意是严格大于总票数。

Code

#include<bits/stdc++.h>
using namespace std;
int n,a[105],s;
vector<int> ans;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s+=a[i];
	}
	if(a[1]>s/2){//特判
		printf("1\n1");
		return 0;
	}
	int t=a[1];
	ans.push_back(1);
	for(int i=2;i<=n;i++){
		if(a[1]>=a[i]*2){
			ans.push_back(i);//加入联盟并统计得票
			t+=a[i];
		}
	}
	if(t>s/2){
		cout<<ans.size()<<endl;
		for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";
		return 0;
	}
	else{
		cout<<0;
		return 0;
	}
	return 0;
}