v我v我v我v我v我
  • 板块灌水区
  • 楼主lyyz20240397
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/29 17:36
  • 上次更新2024/7/29 19:25:42
查看原帖
v我v我v我v我v我
1405214
lyyz20240397楼主2024/7/29 17:36

小明想当Y国的总统,Y国大选是按各州的投票结果来确定最终的结果的,如果得到超过一半的州的支持就可以当选,而每个州的投票结果又是由该州选民投票产生的,如果某个州超过一半的选民支持小明,则他将赢得该州的支持。现在给出每个州的选民人数,请问小明至少需要赢得多少选民的支持才能当选?

【输入】 输入包含多组测试数据。

每组数据的第一行是一个整数NN(1≤N≤1011≤N≤101),表示Y国的州数,当 N=0N=0 时表示输入结束。

接下来一行包括 NN 个正整数,分别表示每个州的选民数,每个州的选民数不超过 100100。

【输出】 对于每组数据输出一行,表示小明至少需要赢得支持的选民数。

【输入样例】 3 5 7 5 0 【输出样例】 6

这样怎么了:

#include<bits/stdc++.h>
using namespace std;

int a[105];
int main(){
	int n,sum=0,x;
	cin>>n;
	while(n){
		sum=0;//计算下一组测试数据前要状态还原,该清零的清零 
		memset(a,0,sizeof(a));
		for(int i=1;i<=n;i++)
		{
			cin>>x;
			a[x]++;
		}
		int j=0,t=1;//初始化j洲的数量,t洲的人数 
		while(!(j==(n/2+1))){//如果没有超过一半以上的支持就加 
			while(a[t]) {//如果有洲是t人 
				sum+=t/2+1;//将一半多1的人累加进sum 
				a[t]--;
				j++;
				if(j==(n/2+1))//如果中途达到标准则提前退出 
					break;
			}
			t++;
		}
		cout<<sum<<endl;//输出选民人数 
		cin>>n; //读入下一组测试数据 
	}

return 0;
}
2024/7/29 17:36
加载中...