Cod sursa(job #788233)

Utilizator S7012MYPetru Trimbitas S7012MY Data 14 septembrie 2012 13:17:07
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <cstring>
#define DN 5000005
#define LL long long
using namespace std;

int n,cnt[260],v[DN],vnou[DN];

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f>>n;
    for(int i=1; i<=n; ++i) f>>v[i];
    for(LL pc=0; pc<=49; pc+=7) {
        memset(cnt,0,sizeof(cnt));
        for(int i=1; i<=n; ++i) {
            int cc=(v[i]>>pc)&255;
            ++cnt[cc+1];
        }
        for(int j=1; j<=256; ++j) cnt[j]+=cnt[j-1];
        for(int i=1; i<=n; ++i) {
            int cc=(v[i]>>pc)&255;
            ++cnt[cc];
            vnou[cnt[cc]]=v[i];
        }
        //memcpy(v,vnou,(n+1)*sizeof(int));
        //for(int i=1; i<=n; ++i) cout<<vnou[i].x<<' ';
        //cout<<'\n';
        copy(vnou+1,vnou+n+1,v+1);
    }
    for(int i=1; i<=n; ++i) g<<v[i]<<' ';
    return 0;
}