Cod sursa(job #1267376)

Utilizator bogdan10bosBogdan Sitaru bogdan10bos Data 19 noiembrie 2014 20:30:24
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>

#define INF (1<<30)
#define mod 666013

using namespace std;
int n, a, b, c, i, p, u, mij, last, x;
vector <int> v;
vector <int>::iterator it;

void I(int x)
{
    if(x<v[0]) {v.insert(v.begin(), 1, x); return;}
    if(x>v[v.size()-1]) {v.insert(v.end(), 1, x); return;}
    int p=0, u=v.size()-1, y=0;
    while(p<=u)
    {
        int mij=p+((u-p)>>1);
        if(v[mij]>=x)
        {
            y=mij;
            u=mij-1;
            continue;
        }
        p=mij+1;
    }
    v.insert(v.begin()+y, 1, x);
}

int main()
{
    freopen("radixsort.in", "r", stdin);
    freopen("radixsort.out", "w", stdout);
    scanf("%d%d%d%d", &n, &a, &b, &c);
    v.push_back(b);
    last=b;
    //printf("%d\n", last);
    for(i=2;i<=n;i++)
    {
        x=(1LL*a*last+1LL*b)%c;
        v.push_back(x);
        last=x;
    }
    sort(v.begin(),v.end());
    i=0;
    for(it=v.begin();it!=v.end();it++)
    {
        i++;
        if((i-1)%10==0)
            printf("%d ", *it);
    }
    return 0;
}