题目:
B. Pashmak and Flowers
链接🔗:link
思路:将容器排序,求极差,再利用二分查找,统计最小值和最大值的个数,相乘就是答案(特殊情况,当极差等于0的时候,ans=n*(n-1)/2)
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
#define ll long long
int main() {
ll int n,ans=0;
cin>>n;
vector<ll int>v;
for (int i=0;i<n ; i++) {
int a;
cin>>a;
v.push_back(a);
}
sort(v.begin(), v.end());
ll int d;
d=v[n-1]-v[0];
ll int pos1=upper_bound(v.begin(), v.end(), v[0])-v.begin();//第一个大于最小值的位置
sort(v.begin(), v.end(), greater<int>());
int pos2=upper_bound(v.begin(), v.end(), v[0],greater<int>())-v.begin();//第一个小于最大值的位置
ans=pos1*pos2;
if (d==0) {
ans=n*(n-1)/2;
}
cout<<d<<" "<<ans;
return 0;
}