Cod sursă (job #301645)

Utilizator avatar 2016 Teo@Bal 2016 IP ascuns
Problemă Specsort (lot liceu) Compilator cpp | 0,74 kb
Rundă Arhiva de probleme Status evaluat
Dată 14 apr. 2017 18:49:47 Scor 100
#include <cstdio>
#define MAXN 50000

using namespace std;

unsigned short v[2][MAXN];

int main()
{
    FILE *fin, *fout;
    int n, p2, i, ind, j;
    fin=fopen("specsort.in", "r");
    fscanf(fin, "%d", &n);
    for(i=0; i<n; i++)
        fscanf(fin, "%hu", &v[0][i]);
    fclose(fin);
    fout=fopen("specsort.out", "w");
    for(p2=ind=1; p2<=n; p2<<=1, ind=1-ind)
    {
        for(i=j=0; i<n; i++)
            if((v[1-ind][i]&p2)==0)
                v[ind][j++]=v[1-ind][i];
        for(i=0; i<n; i++)
            if(v[1-ind][i]&p2)
                v[ind][j++]=v[1-ind][i];
        for(i=0; i<n; i++)
            fprintf(fout, "%hu ", v[ind][i]);
        fprintf(fout, "\n");
    }
    fclose(fout);
    return 0;
}