Pagini recente » Cod sursa (job #2581081) | Cod sursa (job #351167) | Cod sursa (job #300103) | Cod sursa (job #3031420) | Cod sursa (job #2900169)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
int v[10000000];
void mergeSort(int st, int dr){
int m=(st+dr)/2;
if(st<dr){
mergeSort(st, m);
mergeSort(m+1, dr);
}
int i=st, j=m+1, k=0, t[dr-st+1];
while(i<=m && j<=dr) {
if (v[i] < v[j]) t[k++] = v[i++];
else t[k++] = v[j++];
}
while(i<=m) t[k++] = v[i++];
while(j<=dr) t[k++] = v[j++];
k=0;
for(i=st; i<=dr; i++)
v[i] = t[k++];
}
void pb1(){
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin>>n;
for(int i=0;i<n;i++) fin>>v[i];
mergeSort(0,n-1);
for(int i=0;i<n;i++) fout<<v[i]<<' ';
}
int main() {
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, a, b, c;
fin>>n>>a>>b>>c;
v[0] = b;
for(int i=1;i<n;i++)
v[i] = (a * v[i-1] + b) % c;
int check=1, p=0;
map<int, vector<int>> buckets;
map<int, vector<int>> buckets_old;
int base = 256;
for(int i=0;i<n;i++){
buckets_old[v[i]%10].push_back(v[i]);
}
for(int l = 0;l<4;l++){
for(int i=0;i<256;i++){
for(auto x: buckets_old[i])
buckets[(x>>p)&255].push_back(x);
}
buckets_old = buckets;
buckets.clear();
p += 8;
}
for(int i=0;i<buckets_old[0].size(); i+=10) fout<<buckets_old[0][i]<<' ';
return 0;
}