Cod sursa(job #1076346)

Utilizator AndreiOprisanFMI - Oprisan Andrei Daniel AndreiOprisan Data 10 ianuarie 2014 01:49:16
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<iostream>
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
int nrcif(int x)
{
    if(x<10)
        return 1;
    else
    {
        int nr=0;
        int aux=x;
        while(aux!=0)
        {
            nr++;
            aux=aux/10;
        }
        return nr;
    }
}
vector<int> v[10];
int main()
{
    int a[500000],n,i,maxi,pas,div,p,l,j;
    FILE *f,*g;
    f=fopen("algsort.in","r");
    g=fopen("algsort.out","w");
    fscanf(f,"%d",&n);
    for(i=0;i<n;i++)
        fscanf(f,"%d",&a[i]);
    fclose(f);
    maxi=*max_element(a,a+n);
    pas=nrcif(maxi);
    div=1;
    for(i=0;i<pas;i++)
    {
        for(j=0;j<n;j++)
           v[a[j]/div%10].push_back(a[j]);
        p=0;
        for(j=0;j<10;j++)
        {
            for(l=0;l<v[j].size();l++)
             {
                 a[p]=v[j][l];
                 p++;  
             }  
             v[j].clear();  
        }
        div=div*10;
    }
    for(i=0;i<n;i++)
        fprintf(g,"%d",a[i]);
    fclose(g);
    return 0;
}