头一回超内存(MLE),求助!!(T^T)
查看原帖
头一回超内存(MLE),求助!!(T^T)
373226
justinjia楼主2020/9/12 10:11

代码:

#include"stdio.h"
#include"string.h"
void quicksort(int a[],int start,int end){
    int i=start,j=end;
    const int pivot=a[(end-start)/2];
    do{
        while(a[i]<pivot)
            i++;
        while(a[j]>pivot)
            j--;
        if(i<=j){
            int t=a[i];
            a[i]=a[j];
            a[j]=t;
            i++;
            j--;
        }
    }while(i<=j);
    if(start<j)
        quicksort(a,start,j);
    if(end>i)
        quicksort(a,i,end);
}
int main(void){
    int n;
    scanf("%d",&n);
    int a[n],i;
    bool buckets[1000];
    memset(buckets,0,1000/*==sizeof(buckets)*/);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
        if(buckets[a[i]-1])
            a[i]=0;//做一个标记,在题目的范围之外
        else
            buckets[a[i]-1]=1;
    quicksort(a,0,n-1);
    for(i=0;a[i]==0/*0都被放在了最前面*/;i++){
        //循环体为空
    }
    printf("%d\n",n-i);
    for(int j=i;j<n;j++)
        printf("%d ",a[j]);
    return 0;
}
2020/9/12 10:11
加载中...