题目
题意
有n朵花,每朵花有一个鲜艳度,问最大的鲜艳度差和要达到这最大差的取法有多少种。
题目开始没读懂,WA了几次,后来百度才明白。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,s[200010];
scanf("%d",&n);
for(int i=0; i<n; i++) {
scanf("%d",&s[i]);
}
sort(s,s+n);
int maxx=s[n-1],minn=s[0];
if(maxx==minn) {
printf("0 %lld\n",(long long)n*(long long)(n-1)/2);//注意转换long long
} else {
int x,y;
x=y=0;
for(int i=0; i<n; i++) {
if(s[i]==minn)
x++;
else
break;
}
for(int i=n-1;i>=0;i--){
if(s[i]==maxx)
y++;
else
break;
}
printf("%d %lld\n",maxx-minn,(long long)x*y);//转换long long
}
return 0;
}