问题标题: 酷町堂:5567

0
0
已解决
沈峻宇
沈峻宇
资深天翼
资深天翼

话不多说,上源码

#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct node{
    int score,p=0;
} a[100005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].score;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<i;j++){
            if(a[i].score<a[j].score){
                a[i].p++;
            }
        }
        cout<<a[i].p<<' ';
    }
    return 0;
}

超时90分

最后一个点1992ms

不准蹭帖,不准水


0
已采纳
杜Dream
杜Dream
高级守护
高级守护

用桶做:

for(int i=1;i<=n;i++){
cin>>a[i];
b[a[i]]++;
int c=0;
for(int j=400;j>a[i];j--){
if(b[j]!=0){
c+=b[j];
}
}
cout<<c<<" ";
}

前面加定义

用桶,每一次输入完一个分数,就遍历从400~这个分数+1有多少个,并输出

0
沈峻宇
沈峻宇
资深天翼
资深天翼

我知道为什么超时,但无可奈何

沈峻宇在2021-08-25 15:20:52追加了内容

ding

我要回答