Cod sursa(job #68209)

Utilizator gigi_becaliGigi Becali gigi_becali Data 26 iunie 2007 23:37:27
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
using namespace std;
#include <iostream.h>
#include <stdlib.h>
#include <cstdio>
#include <string.h>
#include <algorithm>
#define maxn 1<<20

void radix (int byte, int N, int *source, int *dest)
{
  int i;
  int count[256];
  int index[256];
  memset (count, 0, sizeof (count));
  for (  i=0; i<N; i++ ) count[((source[i])>>(byte<<3))&0xff]++;

  index[0]=0;
  for ( i=1; i<256; i++ ) index[i]=index[i-1]+count[i-1];
  for ( i=0; i<N; i++ ) dest[index[((source[i])>>(byte<<3))&0xff]++] = source[i];
}

void radixsort (int *source, int *temp, int N)
{
  radix (0, N, source, temp);
  radix (1, N, temp, source);
  radix (2, N, source, temp);
  radix (3, N, temp, source);
}

void make_random (int *data, int N)
{
  for ( int i=0; i<N; i++ ) data[i]=rand()-1;
}

int data[maxn];
int temp[maxn];

int main ()
{
  srand(time(0));
 make_random(data, 1000000);
   radixsort (data, temp, 1000000);
 // sort(data, data+1000000); 
// for ( int i=0; i<100; i++ ) cout << data[i] << '\n';
  printf("%d\n", 0xff);

  int ok=1;
  for(int i=1;i<1000000;++i) if(data[i]<data[i-1]) { ok=0; break;}
  printf("%d\n", ok);
 return 0;
}