题目描述
中国石油大学(北京)ACM集训队集结了我校对ACM极高热情的编程选手,选手们每年都要参加一些比赛,比如2015年的长春和北京ACM区域赛。
在2016年1月集训队要参加一场与兄弟学校北京化工大学的友谊赛,由于是友谊赛,成绩不是最重要的,主要参赛目的就是锻炼队员,为之后的青岛大虾比赛做准备。已知集训队现有8个队,每队有一个能力值,且不同队能力值不同,这次友谊赛需要派出4个队,剩余4个队则参加集训队队内的比赛。为了成绩不至于太差,我校教练决定派出的4支队能力值之和要大于剩下的四支队,那请问有多少种选派方法?
输入
数据的第一行为组数T,以下有T组数据,每组数据由8个数组成,分别为a1,a2,……a8(1<=ai<=100000,1<=i<=8),表示每个队的能力值,并且8个数两两不同。
输出
对于每组数据,输出满足条件的方案数
样例输入 Copy
1
1 2 3 4 5 6 7 8
样例输出 Copy
31
暴力
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[8]= {0};
int b,c,d,sum,num=0;
int i,j,k,m,n;
scanf("%d",&b);
for(i=0; i<b; i++)
{
num=0;
scanf("%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7]);
sum=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7];
for(j=0; j<=4; j++)
{
for(k=j+1; k<=5; k++)
{
for(m=k+1; m<=6; m++)
{
for(n=m+1; n<=7; n++)
{
c=a[j]+a[k]+a[m]+a[n];
d=sum-c;
if(c>d)
{
num++;
}
}
}
}
}
printf("%d\n",num);
}
}