Cod sursa(job #1841970)

Utilizator bt.panteaPantea Beniamin bt.pantea Data 6 ianuarie 2017 13:03:43
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");

vector<int> v;

void RadixSort(vector<int> & v, int bit)
{
    vector<int> v0, v1;
    v0.clear();
    v1.clear();
    for (int i = 0; i < v.size(); i++)
    {
        if ((v[i] & (1<<bit)))
            v1.push_back(v[i]);
        else v0.push_back(v[i]);
    }
    v.clear();
    for (int i = 0; i < v0.size(); i++)
        v.push_back(v0[i]);
    for (int i = 0; i < v1.size(); i++)
        v.push_back(v1[i]);
    if (bit < 31)
        RadixSort(v, bit + 1);
}
int n, a, b, c;

int main()
{
    f>>n>>a>>b>>c;
    v.push_back(b);
    for (int i = 1; i < n; i++)
        v.push_back((a * v[i - 1] + b) % c);
    RadixSort(v, 0);
    for (int i = 0; i < n; i+=10)
        g<<v[i]<<' ';
    return 0;
}