题目链接:点击打开链接
题目大意:略。
解题思路:四舍五入到整数小技巧:
printf("%d",(int)(x+0.5)); // 比下面这种写法有时更加精确 printf("%.0f",double(x));
Ps:%.0f 有时候在不同的编译器可能答案会不一样,比如:C::B 16.01 中有误差,而 C::B 12.x 就正常。
AC 代码
#include<bits/stdc++.h> #include<cmath> #define mem(a,b) memset(a,b,sizeof a); #define INF 0x3f3f3f3f using namespace std; typedef long long ll; int main() { int n,m; while(~scanf("%d%d",&n,&m)) { for(int q=0;q<n;q++) { int a[n+10],k=0,c; double rs,ans=0; scanf("%d",&c); rs+=c; for(int i=1;i<n;i++) { scanf("%d",&c); if(c>=0&&c<=m) { a[k++]=c; } } sort(a,a+k); for(int i=1;i<k-1;i++) ans+=a[i]; printf("%d\n",int((ans/(k-2)+rs)/2+0.5)); } } return 0; }