C语言,请问这个代码怎么改

请问怎么在实现按绝对值从小到大的排序的同时输出原来的数字呢?
Samples
input
5
4 6 -2 1 0
output
0 1 -2 4 6

我写的运行结果是这样的:
Samples
input
5
4 6 -2 1 0
output
0 1 2 4 6

#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int compare(const void* a,const void* b)
{
    int* pa = (int*)a;
    int* pb = (int*)b;
    int num1 = *pa;
    int num2 = *pb;
    return num1 - num2;
}
int main(void)
{
    int n,i;
    while(scanf("%d",&n) != EOF)
    {
        int date[n];
        for(i = 0;i < n;i++)
        {
            scanf("%d",&date[i]);
            date[i] = fabs(date[i]);
        }
        qsort(date,n,sizeof(int),compare);
        for(i = 0;i < n;i++)
        {
        printf("%d ",date[i]);
        }
        printf("\n");
    }
    return 0;
}

#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int compare(const void* a,const void* b)
{
    int* pa = (int*)a;
    int* pb = (int*)b;
    int num1 = *pa;
    int num2 = *pb;
    return abs(num1) - abs(num2);
}
int main(void)
{
    int n,i;
    while(scanf("%d",&n) != EOF)
    {
        int date[n];
        for(i = 0;i < n;i++)
        {
            scanf("%d",&date[i]);
        }
        qsort(date,n,sizeof(int),compare);
        for(i = 0;i < n;i++)
        {
        printf("%d ",date[i]);
        }
        printf("\n");
    }
    return 0;
}

#include"stdio.h"
#include"stdlib.h"
#include"math.h"
int compare(const void* a,const void* b)
{
    int* pa = (int*)a;
    int* pb = (int*)b;
    int num1 = *pa;
    int num2 = *pb;
    return abs(num1) - abs(num2);
}
int main(void)
{
    int n,i;
    while(scanf("%d",&n) != EOF)
    {
        int date[n];
        for(i = 0;i < n;i++)
        {
            scanf("%d",&date[i]);
        }
        qsort(date,n,sizeof(int),compare);
        for(i = 0;i < n;i++)
        {
        printf("%d ",date[i]);
        }
        printf("\n");
    }
    return 0;
}