Cod sursă (job #243928)

Utilizator avatar cella.florescu Cella Florescu cella.florescu IP ascuns
Problemă Specsort (lot liceu) Compilator cpp | 0.70 kb
Rundă Arhiva de probleme Status evaluat
Dată 17 iul. 2016 13:59:04 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;
}