考查思维是否全面的的一道题。
设第i个课程难度为d[i],首先求出n门课程中难度最大maxt和最小的课程mint,当m=1时应该用max(abs(maxt-100),abs(100-mint))的平方;当m>1时,求出最大值和最小值后,应当再次与100比较,因为有可能最小值大于100,或则最大值小于100.
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std;
const int INF=1<<30;
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d%d",&n,&m);
int maxt=-INF,mint=INF;
int dif;
for(int i=0;i<n;++i){
scanf("%d",&dif);
if(dif>maxt) maxt=dif;
if(dif<mint) mint=dif;
}
maxt=max(maxt,100);
if(m==1) {
int ans=max(abs(maxt-100),abs(100-mint));
printf("%d\n",ans*ans);
}
else {
maxt=max(maxt,100);
mint=min(mint,100);
printf("%d\n",(maxt-mint)*(maxt-mint));
}
}
return 0;
}
如有不当之处欢迎指出!