为什么会超时啊???
查看原帖
为什么会超时啊???
902030
useless_muzi楼主2023/6/27 22:42
#include<bits/stdc++.h>
using namespace std;
struct node{
    int num,poi,cnt;
}b[10001];
int t,n;

void numsot(int len){
    for(int i=len;i>=1;i--)
        for(int j=1;j<=i-1;j++)
            if(b[j].num>b[j+1].num)
                swap(b[j],b[j+1]);
}
void poisot(int len){
    for(int i=len;i>=1;i--)
        for(int j=1;j<=i-1;j++)
            if(b[j].poi>b[j+1].poi)
                swap(b[j],b[j+1]);
}//两种排序
void lisan(){
    for(int i=1;i<=n;i++) b[i].num=i;
    poisot(n);
    int cur=1;
    int tmp=b[1].poi;
    for(int i=1;i<=n;i++){
        if(tmp!=b[i].poi) cur++,tmp=b[i].poi;
        b[i].cnt=cur;
    }
    numsot(n);
}//离散化
int main(){
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>n;
        for(int j=1;j<=n;j++) cin>>b[i].poi;
        lisan();
        for(int j=1;j<=n;j++) printf("%d ",b[i].cnt);
        printf("\n");
    }
}
2023/6/27 22:42
加载中...