Pagini recente » Cod sursa (job #1688804) | Cod sursa (job #1288525) | Clasament nimic_suspect | Cod sursa (job #1370872) | Cod sursa (job #967742)
Cod sursa(job #967742)
#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)
{
int r,i,b;
if(x<BAZA)
return x;
r=0;
b=BAZA;
i=1;
while(b>=10) {
r=r*i+x%10;
x=x/10;
i=i*10;
b=b/10;
}
return r;
}
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]<<" ";
g.close();
return 0;
}