Cod sursa(job #1231268)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 20 septembrie 2014 10:23:35
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
 vector <int> v[1<<16];
 int n,a[10000005],aa,b,c;
int main()
{ int i,j,k;
    f>>n>>aa>>b>>c;

      a[1]=b;
      v[b-((b>>16)<<16)].push_back(b);

    for(i=2;i<=n;i++)
     { a[i]=(1LL*aa*a[i-1]+b)%c;
       v[a[i]-((a[i]>>16)<<16)].push_back(a[i]);
     }
      k=0;

     for(i=0;i<(1<<16);i++)
     {
        for(j=0;j<v[i].size();j++)
         { k++;a[k]=v[i][j]; }

        while(!v[i].empty()) v[i].pop_back();
     }

    for(i=1;i<=n;i++)
     v[a[i]>>16].push_back(a[i]);


    k=0;

     for(i=0;i<(1<<16);i++)
      for(j=0;j<v[i].size();j++)
       { k++;a[k]=v[i][j];}

 for(i=1;i<=n;i+=10)
   g<<a[i]<<" ";



    return 0;
}