N个政党要组成一个联合内阁,每个党都有自己的席位数.
现在希望你找出一种方案,你选中的党的席位数要大于总数的一半,并且联合内阁的席位数越多越好.
对于一个联合内阁,如果某个政党退出后,其它党的席位仍大于总数的一半,则这个政党被称为是多余的,这是不允许的.
输入格式:
第一行给出有多少个政党.其值小于等于300
下面给出每个政党的席位数.总席位数小于等于 100000
输出格式:
你的组阁方案中最多能占多少个席位.
输入样例#1:
4 1 3 2 4
输出样例#1:
7
提示 选择第二个政党和第四个
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int work_2(int x) {
int ans=1;
while(x--) {
ans*=2;
}
return ans;
}
int f[10005];
int main() {
memset(f,0,sizeof(f));
f[1]=2;
f[2]=4;
f[3]=7;
for(int i=4; i<=40; i++)
f[i]=f[i-1]+f[i-2]+f[i-3];
int n;
int sum;
while(1) {
scanf("%d",&n);
if(n==0)
return 0;
sum=work_2(n);
cout<<sum-f[n]<<endl;
}
}