题意:在数值差距最大的条件下可以凑出多少对数 |
其实也没啥好讲的,排个序,找出最大的有多少个,最小的有多少个,相乘一下就好了。如果最大最小一样的话就是组合数nx(n-1)/2就行了。
#include <iostream>
#include <vector>
#include <cstdio>
#include <map>
#include <climits>
#include <string>
#include <cmath>
#include <cstring>
#include <algorithm>
#define maxn 105
using namespace std;
typedef long long ll;
ll a[200000+5];
map<ll,ll> mymap;
int main()
{
ll n;
cin>>n;
for(ll i=1;i<=n;i++)
{
cin>>a[i-1];
}
sort(a,a+n);
for(ll i=1;i<=n;i++)
{
if(a[i-1]==a[0])
mymap[1]++;
if(a[i-1]==a[n-1])
mymap[2]++;
}
if(a[0]!=a[n-1])
cout<<a[n-1]-a[0]<<' '<<mymap[1]*mymap[2]<<endl;
else
cout<<0<<' '<<mymap[1]*(mymap[1]-1)/2<<endl;
return 0;
}