请问哪里错了

P5726 【深基4.习9】打分

无聊 @ 2020-11-18 20:38:33

/*
ID: dan20081
TASK: test
LANG: C++
*/
#include<bits/stdc++.h>
using namespace std;
int a[11]={0};
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        a[x]++;
    }
    for(int i=1;i<=n;i++){
        if(a[i]!=0){
            a[i]--;
            break;
        }
    }
    for(int i=n;i>=1;i--){
        if(a[i]!=0){
            a[i]--;
            break;
        }
    }
    double ans=0;
    for(int i=1;i<=10;i++){
            ans+=a[i]*i;
    }
    cout<<fixed<<setprecision(2)<<ans/(n-2);
}

这道题我拿桶排做了,但样例都过不了,大神求教


by 无聊 @ 2020-11-18 20:39:31

顺便说一句,我的注释内内容是我的模板,并非抄袭


by w23c3c3 @ 2020-11-18 20:40:45

@无聊 数字值域可能不在1~n之间,所以从1~n,n~1循环不行


by 无聊 @ 2020-11-18 20:43:00

感谢,我试一试


by 无聊 @ 2020-11-18 20:44:06

我换了个方式 AC了

/*
ID: dan20081
TASK: test
LANG: C++
*/
#include<bits/stdc++.h>
using namespace std;
int a[11]={0};
int main(){
    int n;
    cin>>n;
    int maxn=-1;
    int m=11;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        maxn=max(x,maxn);
        m=min(m,x);
        a[x]++;
    }
    double ans=0;
    for(int i=1;i<=10;i++){
            ans+=a[i]*i;
    }
    ans-=maxn;
    ans-=m;
    cout<<fixed<<setprecision(2)<<ans/(n-2);
}

|