Cod sursa(job #1018452)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 29 octombrie 2013 17:14:40
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
using namespace std;
#define NMax 1025
int main() 
{ 
	int unsorted[500001] , bucket[10][500001]={{0}} , sorted[500001] ; 
	int   j , k , m , p , flag = 0, num, N; 
	FILE *f = fopen("algsort.in", "r");
	FILE *g = fopen("algsort.out", "w");
	fscanf(f, "%d", &N);
	for(k=0 ;  k < N ; k++)
	{ 
		fscanf(f, "%d", &num); 
		sorted[k] = unsorted[k] = num; 
	}
	for(p=1; flag != N ; p*=10)
	{ 
			flag = 0; 
		for(k=0;k<N;k++)
		{ 
			bucket[(sorted[k]/p)%10][k] = sorted[k]; 
			if ( (sorted[k]/p)%10  == 0 )
			{ 
				flag++; 
			}
		} 
		if (flag == N)
		{ 
			for(j=0 ;  j < N ; j++)
			{ 
				fprintf(g, "%d ", sorted[j]); 
			} 
			fclose(f); fclose(g);
			return 0; 
		}
		for(j=0,m=0;j<10;j++)
		{ 
			for(k=0;k<N;k++)
			{ 
				if( bucket[j][k] > 0 )
				{ 
				  sorted[m] = bucket[j][k]; 
				  bucket[j][k] = 0 ; 
				  m++; 
				} 
			} 
		} 
	} 
		fclose(f); fclose(g);
return 0 ; 
}