求大佬找错
查看原帖
求大佬找错
495063
QED之神楼主2021/8/24 10:25

UVA一直发邮件和我说是Presentation Error

#include<bits/stdc++.h>
using namespace std;
namespace FAST_IO //快读快输1
{
    template<typename T> void read(T &a)
    {
        a=0;
        int f=1;
        char c=getchar();
        while(!isdigit(c))
        {
            if(c=='-')
            {
                f=-1;
            }
            c=getchar();
        }
        while(isdigit(c))
        {
            a=a*10+c-'0';
            c=getchar();
        }
        a=a*f;
    }
    template <typename T> void write(T a)
    {
        if(a<0)
        {
            a=-a;
            putchar('-');
        }
        if(a>9)
        {
            write(a/10);
        }
        putchar(a%10+'0');
    }
    template <typename T> void writeln(T a) 
    {
        write(a);
        puts("");
    }
}
int maxbit(int data[], int n) //辅助函数,求数据的最大位数
{
    int d = 1; //保存最大的位数
    int p = 10;
    for(int i = 0; i < n; ++i)
    {
        while(data[i] >= p)
        {
            p *= 10;
            ++d;
        }
    }
    return d;
}
void px(int data[], int n) //基数排序
{
    int d = maxbit(data, n);
    int *tmp = new int[n];
    int *count = new int[10]; 
    int i, j, k;
    int radix = 1;
    for(i = 1; i <= d; i++)
    {
        for(j = 0; j < 10; j++)
            count[j] = 0; 
        for(j = 0; j < n; j++)
        {
            k = (data[j] / radix) % 10; 
            count[k]++;
        }
        for(j = 1; j < 10; j++)
            count[j] = count[j - 1] + count[j]; 
        for(j = n - 1; j >= 0; j--)
        {
            k = (data[j] / radix) % 10;
            tmp[count[k] - 1] = data[j];
            count[k]--;
        }
        for(j = 0; j < n; j++)
            data[j] = tmp[j];
        radix = radix * 10;
    }
    delete[]tmp;
    delete[]count;
}
using namespace FAST_IO;
int a[2000005],n=1; 
int main(){
    read(n);
    while(n){
        for(int i=0;i<n;i++){
            read(a[i]);
        }
        px(a,n);
        for(int i=0;i<n;i++){
            write(a[i]);
            if(i!=n) printf(" ");
        }
        cout<<endl;
        read(n);
    }
    return 0;
} 
2021/8/24 10:25
加载中...