Cod sursa(job #2688940)

Utilizator Xutzu358Ignat Alex Xutzu358 Data 20 decembrie 2020 13:55:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int n;
int v[500005];
int mask[500005];
int digit[10];
int p10=1;
int maxnr;
int maxp10 = 1000000000;
void init_array() {
    for (int i=1;i<=n;i++) {
        v[i] = mask[i-1];
    }
    for (int i=0;i<=9;i++) {
        digit[i] = 0;
    }
}

int main()
{
    f >> n;
    for (int i=1;i<=n;i++) {
        f >> v[i];
        maxnr = max(maxnr,v[i]);
    }
    while (p10!=0 && maxnr/p10!=0) {
        for (int i=1;i<=n;i++) {
            digit[(v[i]/p10)%10+1]++;
        }
        for (int i=1;i<=9;i++) {
            digit[i] += digit[i-1];
        }
        for (int i=1;i<=n;i++) {
            mask[digit[(v[i]/p10)%10]] = v[i];
            digit[(v[i]/p10)%10]++;
        }
        init_array();
        if (p10 == maxp10) {
            p10 = 0;
        }
        else {
            p10 *=10;
        }
    }
    for (int i=1;i<=n;i++) {
        g << v[i] << " ";
    }
    return 0;
}