Cod sursă (job #144632)

Utilizator avatar alexpetrescu Alexandru Petrescu alexpetrescu IP ascuns
Problemă Specsort (lot liceu) Compilator c | 0,79 kb
Rundă Arhiva de probleme Status evaluat
Dată 1 mai 2015 19:52:45 Scor 100
#include <stdio.h>
#define MAXN 50000
int v[MAXN], aux[MAXN];
int main(){
    int n, i, j, k;
    FILE *fin, *fout;
    fin=fopen("specsort.in", "r");
    fout=fopen("specsort.out", "w");
    fscanf(fin, "%d", &n);
    for(i=0; i<n; i++){
        fscanf(fin, "%d", &v[i]);
    }
    for(i=0; (1<<i)<=n; i++){
        k=0;
        for(j=0; j<n; j++){
            if(~v[j]&(1<<i)){
                aux[k++]=v[j];
            }
        }
        for(j=0; j<n; j++){
            if(v[j]&(1<<i)){
                aux[k++]=v[j];
            }
        }
        for(j=0; j<n-1; j++){
            fprintf(fout, "%d ", aux[j]);
            v[j]=aux[j];
        }
        fprintf(fout, "%d\n", aux[n-1]);
        v[n-1]=aux[n-1];
    }
    fclose(fin);
    fclose(fout);
    return 0;
}