Cod sursa(job #967736)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 28 iunie 2013 13:13:21
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;

#define NMAX 500001
#define BAZA 100000

int a[NMAX];
vector <int> second[BAZA];
vector <int> first[BAZA];

inline int rest(int x)
{
	return x%BAZA;
}

void sorteaza(int a[], int n)
{
	int i,k;
	for(i=1;i<=n;i++)
		second[rest(a[i])].push_back(a[i]/BAZA);
	for(i=0;i<=BAZA-1;i++)
		for(vector <int> :: iterator it=second[i].begin();it!=second[i].end();it++)
			first[*it].push_back(i);
	for(i=0,k=0;i<=BAZA-1;i++)
		for(vector <int> :: iterator it=first[i].begin();it!=first[i].end();it++)
			a[++k]=i*BAZA+(*it);
}

int main ()
{
	int n,i;
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f>>n;
	for(i=1;i<=n;i++)
		f>>a[i];
	f.close();
	sorteaza(a,n);
	for(i=1;i<=n;i++)
		g<<a[i]<<'\n';
	g.close();
	return 0;
}